How do you save your Activity's state when exiting? Android

蹲街弑〆低调 提交于 2020-01-21 10:20:14

问题


I have a basic app with text inputs, a spinner input, and a second spinner input whose array depends on a setting changed in the Options menu.

Currently, when I press Home or press Return while in my app, I either return to the desktop or cycle back through old inputs i put in recently.

How can I prevent my app from opening multiple instances of itself so that there is only one instance running at any given time, and then how can I save the data entered into inputs, and the settings chosen in my option menu?

I'm a bit new to Java, so I apologize if this is a simple problem.


回答1:


In your acticity override onSaveInstanceState and onRestoreInstanceState. These methods will allow you to save data into a Bundle You can also save data to Preferences. In all of my applications I override both onSaveInstanceState and onRestoreInstanceState to save and load values to a Bundle. I also save data to preferences in onPause and load preferences in onResume. Also in onCreate(Bundle savedInstanceState) I do a check like this

    if(savedInstanceState != null)
    {
        m_mainView.restoreInstanceState(savedInstanceState);
    }
    else
    {
        m_mainView.loadGameFromDatabase(getPreferences(MODE_PRIVATE));
    }

These practices have always worked for me.




回答2:


You will have to use onPause overridden method on your activity and persist your data somewhere (shared preferences probably). Then onResume you have to read them back from persistance storage and populate your controls.

onSaveInstanceState and restoreInstanceState is not your friend when you want to handle back or home button presses.



来源:https://stackoverflow.com/questions/2308628/how-do-you-save-your-activitys-state-when-exiting-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!