Sean
Sean

Reputation: 41

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

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.

Upvotes: 1

Views: 6915

Answers (2)

Ε Г И І И О
Ε Г И І И О

Reputation: 12371

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.

Upvotes: 3

snctln
snctln

Reputation: 12225

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.

Upvotes: 5

Related Questions