Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 我应该在onCreate或onRestoreInstanceState中恢复savedinstancestate吗?_Android_Oncreate_Onrestoreinstancestate - Fatal编程技术网

Android 我应该在onCreate或onRestoreInstanceState中恢复savedinstancestate吗?

Android 我应该在onCreate或onRestoreInstanceState中恢复savedinstancestate吗?,android,oncreate,onrestoreinstancestate,Android,Oncreate,Onrestoreinstancestate,我有一个活动,它为结果启动一些其他活动,因此当结果返回时,该活动可能已被销毁或未被重新创建 我已重写onSaveInstanceState,以便添加需要保留和恢复的数据 当活动被销毁并重新创建时,onCreate被传递给savedInstanceState包;但是onRestoreInstanceState()也被调用并传递相同的包 那么,我应该把从bundle中提取数据并恢复状态的代码放在哪里呢?在onCreate还是在onRestoreInstanceState中?后者是否保证总是被调用 是

我有一个活动,它为结果启动一些其他活动,因此当结果返回时,该活动可能已被销毁或未被重新创建

我已重写onSaveInstanceState,以便添加需要保留和恢复的数据

当活动被销毁并重新创建时,onCreate被传递给savedInstanceState包;但是onRestoreInstanceState()也被调用并传递相同的包

那么,我应该把从bundle中提取数据并恢复状态的代码放在哪里呢?在onCreate还是在onRestoreInstanceState中?后者是否保证总是被调用

是否可能在不调用onCreate的情况下调用onRestoreInstanceState?(例如,如果活动停止并重新启动,但没有销毁和重新创建)?

安卓在onStart()和onResume()生命周期方法之间调用onRestoreInstanceState()方法。因此,为了还原活动的状态,只需实现onRestoreInstanceState()方法还原活动状态。

“您可以选择实现onRestoreInstanceState(),而不是在onCreate()期间恢复状态,系统会在onStart()方法之后调用onRestoreInstanceState()。仅当存在要还原的已保存状态时,系统才会调用onRestoreInstanceState(),因此您无需检查捆绑包是否为NULL“

下面的链接非常清楚地解释了重启活动


这是一种将代码保存到onRestoreInstanceState()中的好方法,或者您可以在onCreate()中检查Bundle args,如果不为null,则可以执行代码。第一次onCreate()时will调用时,时间包参数将为null。谢谢。在这种情况下,onCreate期间的
savedInstanceState
有什么用?系统重新创建活动并将包同时传递给方法ocreate和onRestoreInstanceState方法。您可以同时使用这两种方法来恢复状态。现在我更喜欢onCreate方法,因为我总是从y以及来自oncreate的其他代码。@Elye您可能想在oncreate()中知道是否有以前的状态要加载。此外,如果活动未被销毁,则不会调用oncreate()。为了实现计时器并在活动不在屏幕上时暂停它,我需要使用onRestoreInstanceState()相应地调整计时器。这根本不能回答问题。问题是使用哪一个。您可以使用onRestoreInstanceState