Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What are the PreferenceManager and SharedPreference classes used for in Android?

Tags:

java

android

I've come across two classes being used in a tutorial on splash screens PreferenceManager and SharedPreferences. I didn't gain a great deal of knowledge about them from the tutorial though.

So can someone explain to me what both classes do or are used for?

like image 417
Schonge Avatar asked Mar 04 '14 17:03

Schonge


3 Answers

From the Android Developer site:

PreferenceManager:

Used to help create Preference hierarchies from activities or XML.

SharedPreferences:

Interface for accessing and modifying preference data returned by getSharedPreferences(String, int). For any particular set of preferences, there is a single instance of this class that all clients share.

Put simply, PreferenceManager is normally used when you want to create a PreferenceActivity or load in some Preferences from an .xml file in your application with default values, and holds it's own referenced to SharedPreferences.

SharedPreferences is where you handle the storing and retrieving of key/value pairs that make up your preferences. So you can add variables with keys to retrieve the data later. This feeds into the PreferenceManager which can handle adding default values and setting up the default SharedPreferences.

You can use SharedPreferences throughout your application without needing to use PreferenceManager, but the opposite isn't strictly true.

Further reading:

  • PreferenceActivity (also PreferenceFragment), which uses PreferenceManager in the examples.
  • Android Data Storage which uses SharedPreferences (as well as other options).
  • Vogella article on Android Persistence.
  • StackOverflow issue on using SharedPreferences correctly.
like image 191
biddulph.r Avatar answered Nov 08 '22 07:11

biddulph.r


Preferences is an Android lightweight mechanism to store and retrieve pairs of primitive data types (also called Maps, and Associative Arrays).

In each entry of the form the key is a string and the value must be a primitive data type.

WHEN WE NEED THEM:

PREFERENCES are typically used to keep state information and shared data among several activities of an application.

Shared Preferences is the storage, in android, that you can use to store some basic things related to functionality, users' customization or its profile.

Suppose you want to save user's name in your app for future purposes. You cant save such a little thing in database, So you better keep it saved in your Preferences. Preferences is just like a file , from which you can retrieve value anytime in application's lifetime in a KEY-VALUE pair manner.

Take another example, If you use whatsapp, we have a wallpaper option there. How the application knows which image serves as wall-paper for you whenever you open your whatsapp. This information is stored in preferences. Whenever you clear data for any app, preferences are deleted.

HOW TO USE THESE PREFERENCES :

final int mode = Activity.MODE_PRIVATE; 
final String MYPREFS = "MyPreferences_001"; 

// create a reference to the shared preferences object 
SharedPreferences mySharedPreferences; 

// obtain an editor to add data to my SharedPreferences object 
SharedPreferences.Editor myEditor;

mySharedPreferences = getSharedPreferences(MYPREFS, 0); 

// using this instance you can get any value saved.
 mySharedPreferences.getInt("backColor",Color.BLACK); // default value is BLACK set here

EDITING SHARED PREFERENCES :

myEditor = mySharedPreferences.edit(); 
//edit and commit
myEditor.putString("backColor", Color.RED); 
myEditor.commit() //very imp.
like image 38
Bharat Avatar answered Nov 08 '22 09:11

Bharat


As explained Artoo Detoo... Sharedpreferences kinda works like sessions in web development. you can use them to pass values from one activity to another and it stays that way as far as the app is in use except otherwise changed..

it is also use to user value (either after login or registration of the user). thats how much i can talk about it

like image 1
1baga Avatar answered Nov 08 '22 09:11

1baga