Purpose of onSaveInstanceState
我一直在尝试在Android中构建一个任务列表,我希望它能够记住列表中的内容,即使应用程序已关闭。 我一直在尝试使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | public class Main extends Activity implements OnClickListener, OnKeyListener { ... @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ... if (savedInstanceState != null) { ToDo = savedInstanceState.getStringArrayList("MyArrayList"); AA.notifyDataSetChanged(); } else { ToDo = new ArrayList<String>(); // Initiate ToDo } } @Override public void onSaveInstanceState(Bundle savedInstanceState) { super.onSaveInstanceState(savedInstanceState); savedInstanceState.putStringArrayList("MyArrayList", ToDo); } // ...To-Do implementation follows } |
但这不起作用,所以我开始阅读
查看有关数据存储的Android文档,了解保留数据的选项。您可以使用共享首选项,SQLite数据库,专用内部目录中的文件或SD卡上的文件(如果可用)。
基本上,
每次销毁和重新创建活动时都会调用onSaveInstanceState(),例如在方向更改期间或设备在低内存上运行时。使用它来保存状态变量并在杀死和重新创建活动时采取适当的操作。
您需要的是SharedPreferences,即使应用程序关闭并重新打开也可以保留数据。看看这个 :
1 2 3 4 5 6 7 8 9 10 11 12 13 | //Initialize the list Set<String> valueSet = new HashSet<>(); valueSet.add("A"); valueSet.add("B"); //Saving data in sharedPreferences SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context); SharedPreferences.Editor editor = sharedPreferences.edit(); editor.putStringSet("key_name", valueSet); editor.commit(); //Retrieving saved data from sharedPreferences (even in later sessions) valueSet = sharedPreferences.getStringSet("key_name", null); |
我会把我的待办事项放在数据库中,然后在'onPause()'中将数据保存在数据库中。当活动松散数据等时,您可能希望阅读活动生命周期以获取描述。
关于onSaveInstanceState,这个线程也可能是有意义的。