При тестировании моего приложения libGDX в RoboVM я столкнулся с серьезной проблемой. Когда я приостанавливаю свое приложение (фактически переходя на главный экран или отправляя приглашения приложения через Facebook), а затем возвращаюсь в свое приложение, классы моих игр исчезают. Как будто он не хранит данные в методе resume () должным образом. Сначала я подумал, что это проблема моего AssetLoader, но после некоторой отладки я обнаружил, что ситуация еще хуже. Актуальные экземпляры классов и фигур исчезнут. Как будто их никогда не было.
После поиска в Google я обнаружил, что это может быть связано с IOSGraphics, но мне не удалось решить проблему.
Мой IOSLauncher выглядит примерно так: я удалил специальный код Facebook и Google AdMob.
protected IOSApplication createApplication() {
IOSApplicationConfiguration config = new IOSApplicationConfiguration();
config.useAccelerometer = true;
config.useCompass = true;
config.orientationPortrait = true;
config.orientationLandscape = false;
return new IOSApplication(new Game(this), config);
}
@Override
public boolean didFinishLaunching(UIApplication application,
UIApplicationLaunchOptions launchOptions) {
FBSDKApplicationDelegate.getSharedInstance().didFinishLaunching(application, launchOptions);
initialize();
return true;
}
public void initialize() {
//...
}
public static void main(String[] argv) {
NSAutoreleasePool pool = new NSAutoreleasePool();
UIApplication.main(argv, null, IOSLauncher.class);
pool.close();
}
@Override
public void showAds(boolean show) {
//...
}
@Override
public void shareOnFacebook() {
//...
}
@Override
public void inviteFriends() {
//....
}
@Override
public boolean openURL(UIApplication application, NSURL url,
String sourceApplication, NSPropertyList annotation) {
super.openURL(application, url, sourceApplication, annotation);
return FBSDKApplicationDelegate.getSharedInstance().openURL(
application, url, sourceApplication, annotation);
}
@Override
public void didBecomeActive(UIApplication application) {
super.didBecomeActive(application);
FBSDKAppEvents.activateApp();
}
@Override
public void willResignActive(UIApplication application) {
super.willResignActive(application);
}
@Override
public void willTerminate(UIApplication application) {
super.willTerminate(application);
}
}