我的应用程序当前在onCreate()方法中调用一个方法,这样,一旦创建视图,游戏便会开始并运行动画。但是,当我翻转屏幕以在纵向和横向之间切换时,将再次调用此方法。

我已经将调用行都移到了onStart()方法甚至方法类构造函数上。

这是被调用的方法:

public void startGame() {
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {

        public void run() {
            runGame();
        }
    }, 500);
}


延迟所有内容的构造,然后再运行,否则将无法正常工作。

我有办法阻止onSizeChanged()影响此方法的调用吗?还是有一种方法可以调用此方法,以便在活动开始时启动该方法(再次使onSizeChanged()不能影响该方法,并且在调用之前将所有内容初始化)。

感谢您的光临。

最佳答案

最简单的方法是添加:

android:configChanges="orientation|screenSize"


告诉系统您自己来照顾他们。 However, it's not recommended.


注意:应避免使用此属性,并且只能将其用作最后一种手段。请阅读处理运行时更改以获取有关如何正确处理由于配置更改而导致的重新启动的更多信息。


或者,您可以检查savedInstanceState。如果不为null,则表示用户更改了方向(或应用程序因配置更改而返回)。也许是这样的:

if(savedInstanceState == null)
    startGame();
else
    //handle a configuration change if necessary


请参阅Don't reload application when orientation changes

编辑:

if(savedInstanceState == null) {
    startGame();
} else {
    //handle a configuration change if necessary
    int yourVar = savedInstanceState.getInt("something");
}

10-07 15:55
查看更多