Android Java onCreate
所以我遵循了谷歌的第一个Android应用程序示例。如果我点击发送按钮,它会打开Android Java onCreate,java,android,android-lifecycle,oncreate,Java,Android,Android Lifecycle,Oncreate,所以我遵循了谷歌的第一个Android应用程序示例。如果我点击发送按钮,它会打开DisplayMessageActivity。但是在点击DisplayMessageActivity的后退按钮(左箭头)后,MainActivity的onCreate(Bundle savedInstanceState)再次被调用。它似乎创建了MainActivity的新实例。我可以通过在MainActivity的onCreate中设置一个bool值来验证这一点,但它没有被保留 如何返回到MainActivity(调
DisplayMessageActivity
。但是在点击DisplayMessageActivity的后退按钮(左箭头)后,MainActivity的onCreate(Bundle savedInstanceState)
再次被调用。它似乎创建了MainActivity
的新实例。我可以通过在MainActivity
的onCreate
中设置一个bool值来验证这一点,但它没有被保留
如何返回到MainActivity
(调用者)的上一个实例?您应该看看
如果您想再次访问活动的状态,我建议使用该方法
SaveInstanceState上的公共无效(束超出状态)
以保存当前状态
在此方法中检索以前保存的值:
RestoreInstanceState上的公共无效(Bundle savedInstanceState)`
您可以在返回箭头视图的onClickListener中调用finish(),例如。它将完成DisplayMessageActivity,您将返回调用者活动(本例中为MainActivity)
比如:
backArrow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
看起来它创建了MainActivity的新实例
是的,我想,这是很正常的行为
基本上,Android操作系统一次只保留一个活动,以便释放尽可能多的内存资源
您应该使用
您可以以某些方式保存活动的某些状态(Parcelable
、Bundle
或SharedReferences
等)。从未调用onSaveInstanceState。因此,如果onCreate.hmm中没有出现(savedInstanceState!=null),则在销毁活动时应调用方法onSaveInstanceState
。正如您所说,如果从未调用方法onSaveInstanceState
,则onCreate
中的参数将为null
。是否确实使用@Override
注释正确写入了OnSaveInstanceState(在MainActivity中)?