0% found this document useful (0 votes)
52 views23 pages

09.1 Shared Preferences

This document discusses storing data using shared preferences in Android. It explains that shared preferences allow storing small amounts of primitive data as key-value pairs that persist across user sessions. The document covers creating shared preferences, saving and restoring data, clearing preferences, and listening for changes to preferences.

Uploaded by

castilla garage
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views23 pages

09.1 Shared Preferences

This document discusses storing data using shared preferences in Android. It explains that shared preferences allow storing small amounts of primitive data as key-value pairs that persist across user sessions. The document covers creating shared preferences, saving and restoring data, clearing preferences, and listening for changes to preferences.

Uploaded by

castilla garage
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

Android Developer Fundamentals

Storing Data

Lesson 9

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 1
Preferences
Fundamentals 4.0 International License
9.1 Shared Preferences

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 2
Preferences
Fundamentals 4.0 International License
Contents

● Shared Preferences
● Listening to changes

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 3
Preferences
Fundamentals 4.0 International License
What is Shared Preferences?

● Read and write small amounts of primitive data as


key/value pairs to a file on the device storage
● SharedPreference class provides APIs for reading,
writing, and managing this data
● Save data in onPause()
restore in onCreate()
This work is licensed under a Creative
Shared
Android Developer Commons Attribution-NonCommercial 4
Preferences
Fundamentals 4.0 International License
Shared Preferences AND
and Saved
SavedInstance
InstanceState
State

● Small number of key/value pairs


● Data is private to the application

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 5
Preferences
Fundamentals 4.0 International License
Shared Preferences vs. Saved Instance State

● Persist data across user sessions, ● Preserves state data across


even if app is killed and restarted, activity instances in same user
or device is rebooted session
● Data that should be remembered
● Data that should not be
across sessions, such as a user's
remembered across sessions,
preferred settings or their game
such as the currently selected
score
tab or current state of activity.
● Common use is to store user
● Common use is to recreate state
preferences
after the device has been rotated

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 6
Preferences
Fundamentals 4.0 International License
Creating Shared Preferences

● Need only one Shared Preferences file per app


● Name it with package name of your app—unique and easy
to associate with app
● MODE argument for getSharedPreferences() is for
backwards compatibility—use only MODE_PRIVATE to be
secure
This work is licensed under a Creative
Shared
Android Developer Commons Attribution-NonCommercial 7
Preferences
Fundamentals 4.0 International License
getSharedPreferences()

private String sharedPrefFile =


"com.example.android.hellosharedprefs";
mPreferences =
getSharedPreferences(sharedPrefFile,
MODE_PRIVATE);

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 8
Preferences
Fundamentals 4.0 International License
Saving Shared Preferences

● SharedPreferences.Editor interface
● Takes care of all file operations
● put methods overwrite if key exists
● apply() saves asynchronously and safely

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 9
Preferences
Fundamentals 4.0 International License
SharedPreferences.Editor
@Override
protected void onPause() {
super.onPause();
SharedPreferences.Editor preferencesEditor =
mPreferences.edit();
preferencesEditor.putInt("count", mCount);
preferencesEditor.putInt("color", mCurrentColor);
preferencesEditor.apply();
}
This work is licensed under a Creative
Shared
Android Developer Commons Attribution-NonCommercial 10
Preferences
Fundamentals 4.0 International License
Restoring Shared Preferences

● Restore in onCreate() in Activity


● Get methods take two arguments—the key, and the default
value if the key cannot be found
● Use default argument so you do not have to test whether
the preference exists in the file

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 11
Preferences
Fundamentals 4.0 International License
Getting data in onCreate()
mPreferences = getSharedPreferences(sharedPrefFile, MODE_PRIVATE);
if (savedInstanceState != null) {
mCount = mPreferences.getInt("count", 1);
mShowCount.setText(String.format("%s", mCount));

mCurrentColor = mPreferences.getInt("color", mCurrentColor);


mShowCount.setBackgroundColor(mCurrentColor);

mNewText = mPreferences.getString("text", "");


} else { … }

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 12
Preferences
Fundamentals 4.0 International License
Clearing

● Call clear() on the SharedPreferences.Editor and apply


changes

● You can combine calls to put and clear. However, when


you apply(), clear() is always done first, regardless of
order!
This work is licensed under a Creative
Shared
Android Developer Commons Attribution-NonCommercial 13
Preferences
Fundamentals 4.0 International License
clear()

SharedPreferences.Editor preferencesEditor =
mPreferences.edit();
preferencesEditor.clear();
preferencesEditor.apply();

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 14
Preferences
Fundamentals 4.0 International License
Listening to
Changes

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 15
Preferences
Fundamentals 4.0 International License
Listening to changes
● Implement interface
SharedPreference.OnSharedPreferenceChangeListener
● Register listener with
registerOnSharedPreferenceChangeListener()
● Register and unregister listener in onResume() and
onPause()
● Implement on onSharedPreferenceChanged() callback
This work is licensed under a Creative
Shared
Android Developer Commons Attribution-NonCommercial 16
Preferences
Fundamentals 4.0 International License
Interface and callback
public class SettingsActivity extends AppCompatActivity
implements OnSharedPreferenceChangeListener { ...

public void onSharedPreferenceChanged(


SharedPreferences sharedPreferences, String key) {
if (key.equals(MY_KEY)) {
// Do something
}
}
}

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 17
Preferences
Fundamentals 4.0 International License
Creating and registering listener

SharedPreferences.OnSharedPreferenceChangeListener listener =
new SharedPreferences.OnSharedPreferenceChangeListener() {
public void onSharedPreferenceChanged(
SharedPreferences prefs, String key) {
// Implement listener here
}
};
prefs.registerOnSharedPreferenceChangeListener(listener);

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 18
Preferences
Fundamentals 4.0 International License
You need a STRONG reference to the listener

● When registering the listener the preference manager does


not store a strong reference to the listener
● You must store a strong reference to the listener, or it will
be susceptible to garbage collection
● Keep a reference to the listener in the instance data of an
object that will exist as long as you need the listener

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 19
Preferences
Fundamentals 4.0 International License
Practical: HelloSharedPrefs

● Add Shared Preferences to a starter app

● Add a "Reset" button that clears both the


app state and the preferences for the app

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 20
Preferences
Fundamentals 4.0 International License
Learn more
● Saving Data
● Storage Options
● Saving Key-Value Sets
● SharedPreferences
● SharedPreferences.Editor
Stackoverflow
● How to use SharedPreferences in Android to store, fetch and edit values
● onSavedInstanceState vs. SharedPreferences

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 21
Preferences
Fundamentals 4.0 International License
What's Next?

● Concept Chapter: 9.1 C Shared Preferences


● Practical: 9.1 P Shared Preferences

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 22
Preferences
Fundamentals 4.0 International License
END

This work is licensed under a Creative


Shared
Android Developer Commons Attribution-NonCommercial 23
Preferences
Fundamentals 4.0 International License

You might also like