问题
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