Збереження даних в постійне сховище на платформі Android. Це сховище є відносно постійним, користувач може зайти в налаштування програми і очистити дані програми, тим самим очистивши всі дані в сховищі.
Для роботи з даними постійного сховища нам знадобиться екземпляр класу SharedPreferences, який можна отримати у будь-якого об'єкта, успадкованого від класу android.content.Context (наприклад, Activity або Service). У об'єктів цих класів є метод 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 або написавши власні серіалізатори для складних об'єктів.