来自Android Activity API: http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)
它说“状态可以在onCreate(Bundle)或onRestoreInstanceState(Bundle)中恢复”。我的问题是我应该在哪里恢复我的州?为什么我可以在任何一个地方做到这一点?
谢谢。
答案 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()。