在了解了保存非UI信息的重要性之后,onPause
我试图用的代码替换我正在使用的onSavedInstanceState
代码onPause
。所以我有这样的代码被保存和恢复的ArrayList
作为的一部分savedInstanceState
:
public class SetUpPlayers extends Activity implements OnClickListener
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.set_up_players);
if (savedInstanceState != null)
setUpArrayList = (ArrayList<SetUpListItem>) savedInstanceState.getSerializable("setUpArrayList");
else
...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
savedInstanceState.putSerializable("setUpArrayList", (Serializable) setUpArrayList);
super.onSaveInstanceState(savedInstanceState);
}
如何使用onPause
加我的序列化ArrayList
到savedInstanceState
这onCreate
会回暖?还是我需要从首选项保存并加载它?
您已经setUpArrayList
将实例状态捆绑包保存了。这种捆绑将被传递到您的活动onCreate()
,并在onRestoreInstanceState()
每次活动的这个实例被重建。如果您的应用程序进入后台并且Android终止了托管该应用程序的进程,然后用户返回到您的应用程序(通过再次启动它或从“最近任务”列表中选择它),就会发生这种情况。
但是,如果用户退出您的活动(例如,通过使用BACK按钮),然后再次启动您的活动,则传递给的实例状态onCreate()
将为null。如果您还希望setUpArrayList
在这种情况下能够还原,则需要将其存储在某些持久性存储中(数据库,共享首选项等)。在这种情况下,您可以序列化为setUpArrayList
aString
并将其写入持久性存储中(或者您可以使用更结构化的方法,例如XML或JSON)。您应该在中执行此操作onPause()
。然后,如果实例状态参数为null,则onCreate()
可以setUpArrayList
从持久性存储中还原。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句