RoboVM で libGDX アプリをテストしていると、重大な問題が発生しました。(実際にホーム画面に移動するか、Facebook 経由でアプリの招待状を送信して) アプリを一時停止してからアプリに戻ると、ゲームのクラスが消えます。resume() メソッドでデータを適切に保存しないかのように。まず、AssetLoader に問題があると思いましたが、デバッグを行った後、状況がさらに悪化していることがわかりました。クラスと形状の実際のインスタンスは消えます。あたかも存在しなかったかのように。
問題をグーグルで調べたところ、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);
}
}