Shared preferences are used to save and retrieve key-value data. It only allows to save primitive data types: int, long, float, boolean, and string. The data are stored in an XML file in the app data folder:
/data/data/<PACKAGE_NAME>/shared_prefs/<PREF_NAME>.xml
To get a SharedPreferences
object, we can use one of the following methods:
Method | Description |
---|---|
getSharedPreferences() | Allows to save multiple shared preference files by passing the name as a first parameter. |
getPreferences() | Used if need to save only one shared preference file for the activity. Class name of the activity will be used to identify a file. |
To save data in a shared preference file, we need an Editor
. It can be created by edit()
method. We can add key-value pair with methods such as putString(key, value)
, putInt(key, value)
, etc.
To save changes, use commit()
or apply()
method. The commit()
method writes the data to persistent storage synchronously (blocks the thread). It then returns a boolean value that indicates success or failure. The apply()
schedules the data to be written asynchronously. It doesn't return a value that informs about a status of the operation.
To retrieve value from the shared preference file, we need to use methods such as getString(key, defaultValue)
, getInt(key, defaultValue)
, etc.
package com.example.app;
import androidx.appcompat.app.AppCompatActivity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends AppCompatActivity
{
private static final String prefName = "my_data";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
write("Hello world");
String message = read();
Log.d("MY_APP", message);
}
private void write(String message)
{
SharedPreferences sharedPref = getSharedPreferences(prefName, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString("message", message);
editor.apply();
}
private String read()
{
SharedPreferences sharedPref = getSharedPreferences(prefName, MODE_PRIVATE);
return sharedPref.getString("message", "");
}
}
package com.example.app
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
class MainActivity : AppCompatActivity()
{
private val prefName: String = "my_data"
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
write("Hello world")
val message = read()
Log.d("MY_APP", message!!)
}
private fun write(message: String)
{
val sharedPref = getSharedPreferences(prefName, MODE_PRIVATE)
val editor = sharedPref.edit()
editor.putString("message", message)
editor.apply()
}
private fun read(): String?
{
val sharedPref = getSharedPreferences(prefName, MODE_PRIVATE)
return sharedPref.getString("message", "")
}
}
Leave a Comment
Cancel reply