Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What's the difference between getDefaultSharedPreferences() and getPreferences()?

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 the PreferenceActivity, you should call:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());

(where getActivity() is simply the Context here because it's called inside a Fragment.)

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) and Activity.getPreferences(int mode)?

Please note: This question does not involve anything about getSharedPreferences() which requires a file name. It's about the difference between getPreferences() and getDefaultSharedPreferences().

Thanks in advance.

like image 908
fqf555 Avatar asked Oct 31 '15 01:10

fqf555


People also ask

What is the difference between getPreferences() and getSharedPreferences()?

getSharedPreferences() — Use this if you need multiple shared preference files identified by name, which you specify with the first parameter. You can call this from any Context in your app. getPreferences() — Use this from an Activity if you need to use only one shared preference file for the activity.

What is getDefaultSharedPreferences?

getDefaultSharedPreferences(Context context) Gets a SharedPreferences instance that points to the default file that is used by the preference framework in the given context. static String. getDefaultSharedPreferencesName(Context context) Returns the name used for storing default shared preferences.

What is getSharedPreferences in android?

Shared Preferences allow you to save and retrieve data in the form of key,value pair. In order to use shared preferences, you have to call a method getSharedPreferences() that returns a SharedPreference instance pointing to the file that contains the values of preferences.

Is SharedPreferences deprecated Android?

getSharedPreferences. open fun getSharedPreferences (): SharedPreferences! Deprecated: Deprecated in Java.


1 Answers

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'

like image 174
Shyri Avatar answered Oct 08 '22 12:10

Shyri