There are generally two kinds of persistent state than an activity
will deal with: shared document-like data (typically stored in a SQLite
database using a
For content provider data, we suggest that activities use a "edit in place" user model. That is, any edits a user makes are effectively made immediately without requiring an additional confirmation step. Supporting this model is generally a simple matter of following two rules:
See the
The Activity class also provides an API for managing internal persistent state associated with an activity. This can be used, for example, to remember the user's preferred initial display in a calendar (day view or week view) or the user's default home page in a web browser.
Activity persistent state is managed with the method
Here is an excerpt from a calendar activity that stores the user's preferred view mode in its persistent settings:
content provider
)
and internal state such as user preferences.For content provider data, we suggest that activities use a "edit in place" user model. That is, any edits a user makes are effectively made immediately without requiring an additional confirmation step. Supporting this model is generally a simple matter of following two rules:
- When creating a new document, the backing database entry or file for
it is created immediately. For example, if the user chooses to write
a new e-mail, a new entry for that e-mail is created as soon as they
start entering data, so that if they go to any other activity after
that point this e-mail will now appear in the list of drafts.
- When an activity's
onPause()
method is called, it should commit to the backing content provider or file any changes the user has made. This ensures that those changes will be seen by any other activity that is about to run. You will probably want to commit your data even more aggressively at key times during your activity's lifecycle: for example before starting a new activity, before finishing your own activity, when the user switches between input fields, etc.
See the
content package
for
more information about content providers. These are a key aspect of how
different activities invoke and propagate data between themselves.The Activity class also provides an API for managing internal persistent state associated with an activity. This can be used, for example, to remember the user's preferred initial display in a calendar (day view or week view) or the user's default home page in a web browser.
Activity persistent state is managed with the method
getPreferences(int)
,
allowing you to retrieve and
modify a set of name/value pairs associated with the activity. To use
preferences that are shared across multiple application components
(activities, receivers, services, providers), you can use the underlying
Context.getSharedPreferences()
method
to retrieve a preferences
object stored under a specific name.
(Note that it is not possible to share settings data across application
packages -- for that you will need a content provider.)Here is an excerpt from a calendar activity that stores the user's preferred view mode in its persistent settings:
public class CalendarActivity extends Activity { ... static final int DAY_VIEW_MODE = 0; static final int WEEK_VIEW_MODE = 1; private SharedPreferences mPrefs; private int mCurViewMode; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SharedPreferences mPrefs = getSharedPreferences(); mCurViewMode = mPrefs.getInt("view_mode" DAY_VIEW_MODE); } protected void onPause() { super.onPause(); SharedPreferences.Editor ed = mPrefs.edit(); ed.putInt("view_mode", mCurViewMode); ed.commit(); } }
Other useful resources:
1. http://mobile.tutsplus.com/tutorials/android/android-application-preferences/
2. http://stackoverflow.com/questions/3075015/android-preference
3. http://mobiforge.com/developing/story/preserving-user-preferences-android-applications
4. http://sogacity.com/using-shared-preferences-in-android/
5. http://stackoverflow.com/questions/3011604/how-do-i-get-preferences-to-work-in-android
More details: http://developer.android.com/reference/android/app/Activity.html
0 comments
Thanks for your comment