onSaveInstanceState的目的

Zer*_*ero 2 android save android-activity

我一直在尝试在Android中构建一个任务列表,我希望它能够记住列表中的内容,即使应用程序已关闭.我一直在尝试使用onSaveInstanceState如下方法:

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
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用,所以我开始阅读onSaveInstanceState,如果我理解正确,那么你实际上无法在会话之间保存数据.那么你怎么能这样做呢?

wsa*_*lle 6

查看有关数据存储的Android文档,了解保留数据的选项.您可以使用共享首选项,SQLite数据库,专用内部目录中的文件或SD卡上的文件(如果可用).

基本上,onSaveInstanceState用于Android杀死您的活动以回收内存的场景.在这种情况下,操作系统将记录您的活动的存在,以防用户返回它,然后它会将Bundlefrom 传递onSaveInstanceState给您的onCreate方法.它并不意味着用于通用存储.