gpt4 book ai didi

android - onPause 而不是 onSaveInstanceState

转载 作者:行者123 更新时间:2023-11-30 03:11:20 25 4
gpt4 key购买 nike

阅读了在 onPause 点保存非 UI 信息的重要性后,我试图用 的代码替换我用于 onSavedInstanceState 的代码暂停。所以我有这段代码保存和恢复 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 添加到 onCreate 将获取的 savedInstanceState 中?还是我需要从首选项中保存和加载它?

最佳答案

您已经在实例状态 Bundle 中保存了您的 setUpArrayList。每当重新创建此 Activity 实例时,此 Bundle 将在 onCreate()onRestoreInstanceState() 中传递给您的 Activity。如果您的应用程序进入后台并且 Android 终止托管您的应用程序的进程,然后用户返回您的应用程序(通过再次启动它或从“最近的任务”列表中选择它),就会发生这种情况。

但是,如果用户退出您的 Activity(例如,通过使用 BACK 按钮)然后再次启动您的 Activity,则传递给 onCreate() 的实例状态将为 null。如果您还希望能够在这种情况下恢复 setUpArrayList,那么您需要将其存储在一些持久性存储(数据库、共享首选项等)中。在这种情况下,您可以将 setUpArrayList 序列化为 String 并将其写入持久存储(或者您可以使用更结构化的方法,如 XML 或 JSON)。您应该在 onPause() 中执行此操作。然后,在 onCreate() 中,如果实例状态参数为 null,您可以从持久存储中恢复 setUpArrayList

关于android - onPause 而不是 onSaveInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20918691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com