Сохранения данных в постоянное хранилище на платформе Android. Это хранилище является относительно постоянным, пользователь может зайти в настройки приложения и очистить данные приложения, тем самым очистив все данные в хранилище.
Для работы с данными постоянного хранилища нам понадобится экземпляр класса SharedPreferences, который можно получить у любого объекта, унаследованного от класса android.content.Context (например, Activity или Service). У объектов этих классов (унаследованных от Context) есть метод getSharedPreferences, который принимает 2 параметра:
Чтобы получить значение необходимой переменной, используйте следующие методы объекта SharedPreferences: getBoolean(String key, boolean defValue), getFloat(String key, float defValue), getInt(String key, int defValue), getLong(String key, long defValue), getString(String key, String defValue), getStringSet(String key, Set
Чтобы записать значение переменной необходимо:
Также есть возможность удалить конкретное значение (remove(String key)) или все значения (clear())
Приведенный ниже код демонстрирует запись переменной типа String в хранилище:
SharedPreferences settings = context.getSharedPreferences(PERSISTANT_STORAGE_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = settings.edit();
editor.putString( "name", "John" );
editor.commit();
- context - объект, унаследованный от android.content.Context.
Представим простой класс для работы с постоянным хранилищем - PersistantStorage.
Перед записью значений в хранилище или получением значений из хранилища, класс нужно проинициализировать, вызвав метод init() и передав ему объект, унаследованный от android.content.Context (например, Activity или Service).
import android.content.Context;
import android.content.SharedPreferences;
public class PersistantStorage {
public static final String STORAGE_NAME = "StorageName";
private static SharedPreferences settings = null;
private static SharedPreferences.Editor editor = null;
private static Context context = null;
public static void init( Context cntxt ){
context = cntxt;
}
private static void init(){
settings = context.getSharedPreferences(STORAGE_NAME, Context.MODE_PRIVATE);
editor = settings.edit();
}
public static void addProperty( String name, String value ){
if( settings == null ){
init();
}
editor.putString( name, value );
editor.commit();
}
public static String getProperty( String name ){
if( settings == null ){
init();
}
return settings.getString( name, null );
}
}
В этом классе реализована работа только со строковыми данными. Вы легко можете самостоятельно его расширить, используя стандартные методы PersistantStorage или написав собственные сериализаторы для сложных объектов.