如果我的手机在睡觉或我离开我的应用程序发送文本/接听电话我的应用程序重新启动。 我该如何防止这种情况?
我希望保存对象而不是基本数据类型。如果应用程序关闭或手机关闭,我不需要保存应用程序当前状态/数据,但我已准备好在必要时执行此操作。
答案 0 :(得分:1)
调用onSaveInstanceState(Bundle outState)
时,您需要在主活动中保存任何临时状态变量。只要您的应用程序有可能被操作系统销毁,就会调用此方法。在onCreate(Bundle savedInstanceState)
中,如果savedInstanceState
不为空,则表示您的活动先前已终止,您需要从该捆绑包中重新填充临时状态变量。
这就是你的主要Activity正在“重新启动”的原因,因为当你的主Activity在被杀死后恢复时会再次调用onCreate,但是它没有从bundle中加载数据来重新创建应用程序暂停时的状态。 / p>
这里有更详细的描述:http://developer.android.com/reference/android/app/Activity.html
答案 1 :(得分:0)
重写此方法以保存对象
@Override
public Object onRetainNonConfigurationInstance()
{
if (myObject != null) // Check that the object exists
return(myObject);
return super.onRetainNonConfigurationInstance();
}
在onCreate()方法中使用此代码重新加载对象。
if (getLastNonConfigurationInstance() != null)
{
table = (Table)getLastNonConfigurationInstance();
如果您的手机关闭您的应用以节省内存或手机休眠,这将保存您的对象。按下/关闭对象将不会保存它。您可以提示用户改为按主页按钮,或者再次按后退按钮以使用onBackPressed()退出或使用SQL将数据永久存储在对象中。