我正在寻找一个答案(但我可能问错了问题)
问题 - 任何事件是否只被调用一次 TOTAL 直到活动被销毁?
我问是因为当我的用户将手机旋转到横向时,oncreate 和 onstart 都会被调用,从而导致重新加载。
我正在寻找一个我可以将行为放入其中只会运行 1x 的事件(直到活动被终止)
先感谢您
我正在寻找一个答案(但我可能问错了问题)
问题 - 任何事件是否只被调用一次 TOTAL 直到活动被销毁?
我问是因为当我的用户将手机旋转到横向时,oncreate 和 onstart 都会被调用,从而导致重新加载。
我正在寻找一个我可以将行为放入其中只会运行 1x 的事件(直到活动被终止)
先感谢您
如果它特定于 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,之后将填充它。
你并没有真正指定你想用它做什么,所以我不能保证这适合你的使用,但Application.onCreate
只被调用一次。
如果您想消除在方向更改上重新创建活动,您可以在清单中侦听配置更改。
<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();
}
重新创建布局,使其与新方向匹配,而无需重新创建整个活动。
检查http://developer.android.com/guide/topics/resources/runtime-changes.html以处理配置更改并维护它们之间的大量数据......如果您需要在配置更改之间维护的只是设置,您可以使用 onSavedInstanceState() 和 onRestoreInstanceState() 回调和给定的包。