我正在寻找一个答案(但我可能会问错误的问题)
问题 - 任何事件只会在TOTAL被调用一次,直到活动被销毁?
我问,因为当我的用户将手机旋转到横向oncreate和onstart都被调用导致重新加载各种类型。
我正在寻找一个可以将行为放入其中的事件,只能运行1次(直到活动被杀死)
提前谢谢
答案 0 :(得分:11)
如果它特定于Activity,只需检查onCreate事件中的savedInstanceState参数。如果它为null,则运行您的代码,否则,您的代码已经运行。
示例:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(savedInstanceState == null) {
// Run your code
}
}
第一次运行onCreate时,savedInstanceState将始终为null,之后将填充它。
答案 1 :(得分:1)
您没有真正指定您尝试使用它的内容,因此我无法保证这适合您的使用,但Application.onCreate
仅被调用一次。
答案 2 :(得分:1)
如果您想在orientationchange上消除活动的重新创建,您可以在清单中监听配置更改。
<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();
}
重新创建布局,使其与新方向匹配,而无需重新创建整个活动。
答案 3 :(得分:0)
检查http://developer.android.com/guide/topics/resources/runtime-changes.html以处理配置更改并在它们之间维护大量数据...如果您需要在配置更改之间维护所需的只是设置,则可以使用onSavedInstanceState()和onRestoreInstanceState()回调和给定的包。