我应该在哪里恢复我的android状态

时间:2011-04-06 21:49:21

标签: android

来自Android Activity API: http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle

它说“状态可以在onCreate(Bundle)或onRestoreInstanceState(Bundle)中恢复”。我的问题是我应该在哪里恢复我的州?为什么我可以在任何一个地方做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:1)

考虑在onCreate中恢复状态,因为null bundle的存在是onCreate中其他有用操作的有用标志。

编辑:查看我的代码,在onCreate中读取包中的另一个原因是我在onCreate中更新小部件。因此需要在onCreate中知道状态。如果状态来自捆绑包或来自prefs或来自调用意图,则无关紧要。所以模式看起来像

getMyState(); //可以来自bundle或lastNonConfigurationInstance或prefs或调用intent

someWidget.setYourStateFromInfoInGetState

答案 1 :(得分:0)

我将在这里假设,因为我从未使用过onSaveInstanceState,但是从文档中,你应该使用后者。在活动开始时调用onCreate,而在onStart()之后调用onRestoreInstanceState,这在onCreate()或onRestart()之后发生。

http://developer.android.com/reference/android/app/Activity.html

  

protected void onCreate(Bundle   savedInstanceState)从:API Level 1

     

活动开始时调用。   这是大多数初始化的地方   应该去:调用setContentView(int)   使用扩充活动的UI   findViewById(int)以编程方式   与UI中的小部件交互,   调用managedQuery(android.net.Uri,   String [],String,String [],String)to   检索数据的游标   显示等。

     

protected void onRestoreInstanceState   (Bundle savedInstanceState)从:API   1级

     

在onStart()之后调用此方法   当活动正在进行时   从之前保存的重新初始化   国家,在这里给出   savedInstanceState。最   实现将简单地使用   onCreate(Bundle)恢复他们的   国家,但有时方便   在这之后做到这一点   初始化已完成或已完成   允许子类决定是否   使用您的默认实现。该   此方法的默认实现   执行任何视图状态的恢复   以前被冻结过的   的onSaveInstanceState(束)。

     

protected void onStart()从:API   1级

     

在onCreate(Bundle)之后调用 - 或   在onRestart()之后的活动   已经停止了,但现在又来了   正在向用户显示。它会   接着是onResume()。