3

我正在寻找一个答案(但我可能问错了问题)

问题 - 任何事件是否只被调用一次 TOTAL 直到活动被销毁?

我问是因为当我的用户将手机旋转到横向时,oncreate 和 onstart 都会被调用,从而导致重新加载。

我正在寻找一个我可以将行为放入其中只会运行 1x 的事件(直到活动被终止)

先感谢您

4

4 回答 4

11

如果它特定于 Activity,只需检查 onCreate 事件中的 savedInstanceState 参数。如果为空,则运行您的代码,否则,您的代码已经运行。

例子:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    if(savedInstanceState == null) {
        // Run your code
    }        
}

第一次运行 onCreate 时,savedInstanceState 将始终为 null,之后将填充它。

于 2012-01-27T00:38:43.537 回答
1

你并没有真正指定你想用它做什么,所以我不能保证这适合你的使用,但Application.onCreate只被调用一次。

于 2012-01-27T00:31:55.967 回答
1

如果您想消除在方向更改上重新创建活动,您可以在清单中侦听配置更改。

    <activity
            android:name=".MyActivity"
            android:configChanges="orientation" >
    </activity>

然后你可以像这样覆盖 onConfigurationChanged:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged( newConfig );

    LinearLayout main = (LinearLayout) findViewById( R.id.mainLayout );
    main.requestLayout();
}

重新创建布局,使其与新方向匹配,而无需重新创建整个活动。

于 2012-01-27T00:48:18.283 回答
0

检查http://developer.android.com/guide/topics/resources/runtime-changes.html以处理配置更改并维护它们之间的大量数据......如果您需要在配置更改之间维护的只是设置,您可以使用 onSavedInstanceState() 和 onRestoreInstanceState() 回调和给定的包。

于 2012-01-27T00:46:31.813 回答