What's the difference between getDefaultSharedPreferences() and getPreferences()?
Solution 1
Acoording to the link you provided to Android documentation
getSharedPreferences() - Use this if you need multiple preferences files identified by name, which you specify with the first parameter.
getPreferences() - Use this if you need only one preferences file for your Activity. Because this will be the only preferences file for your Activity, you don't supply a name.
So it is, use getSharedPreferences when the data you want to save/retrieve can be used from different activities in the app. If those preferences will only be used in one Activity, you can use getPreferences.
Edit: also note that as said in the post you linked 'getDefaultSharedPreferences will use a default name like "com.example.something_preferences", but getSharedPreferences will require a name'
Solution 2
One of the major differences: getPreferences () returns a file only related to the activity it is opened from. While getDefaultSharedPreferences () returns the application's global preferences. Learned that the hard way yesterday.
Solution 3
If you take a look inside PreferenceManager:
public static SharedPreferences getDefaultSharedPreferences(Context context) {
return context.getSharedPreferences(getDefaultSharedPreferencesName(context),
getDefaultSharedPreferencesMode());
}
/**
* Returns the name used for storing default shared preferences.
*
* @see #getDefaultSharedPreferences(Context)
* @see Context#getSharedPreferencesPath(String)
*/
public static String getDefaultSharedPreferencesName(Context context) {
return context.getPackageName() + "_preferences";
}
private static int getDefaultSharedPreferencesMode() {
return Context.MODE_PRIVATE;
}
So getDefaultSharedPreferences() use getSharedPreferences() method with your app package name and mode private, if you use getPreferences() from activity it will use the same getSharedPreferences() method but with getLocalClassName();
Solution 4
From the first article linked below: "Note: The SharedPreferences APIs are only for reading and writing key-value pairs and you should not confuse them with the Preference APIs, which help you build a user interface for your app settings (although they use SharedPreferences as their implementation to save the app settings)."
http://developer.android.com/training/basics/data-storage/shared-preferences.html
![Admin](/assets/logo_square_200-5d0d61d6853298bd2a4fe063103715b4daf2819fc21225efa21dfb93e61952ea.png)
Admin
Updated on June 04, 2022Comments
-
Admin about 2 years
I'm currently taking the "Developing Android Apps" Udacity course. In the "Lesson 3: New Activities and Intents > Use SharedPreferences" segment, the instructor asked me to dig around the Android Developer site for how to get the user preferences from
SharedPreferences
. However, I found it different between the official documentation and the course's solution.The Udacity course's solution says, to grab a
SharedPreferences
instance for thePreferenceActivity
, you should call:SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
(where
getActivity()
is simply theContext
here because it's called inside aFragment
.)While the official documentation on Android Developer Site indicates that you should call:
SharedPreferences prefs = getActivity().getPreferences(Context.MODE_PRIVATE)
So what's the difference between
PreferenceManager.getDefaultSharedPreferences(Context context)
andActivity.getPreferences(int mode)
?Please note: This question does not involve anything about
getSharedPreferences()
which requires a file name. It's about the difference betweengetPreferences()
andgetDefaultSharedPreferences()
.Thanks in advance.
-
me_ almost 8 yearsthe question did not address getsharedprefereces... it was about the differences between getdefaultsharedpreference and getpreferences... also note that if a preference key/value is stored using getshared preferences or getpreferences it will not be available as a default preference in another activity... you know like the question asked about the differences between the things you didn't address...
-
Genma almost 8 yearsHere you can find the relevant documentation: developer.android.com/guide/topics/ui/…
-
Jian over 5 yearsIf I understand you correctly, calling
getPreferences()
in two different activities will result in two different files, right?