Android. Сохранение данных в постоянное хранилище

января
25
2012

Сохранения данных в постоянное хранилище на платформе 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 defValues). Второй параметр - значение, которое вернется в случае если значение по ключу key отсутствует в SharedPreferences. Также, методом getAll() можно получить все доступные значения.

Чтобы записать значение переменной необходимо:

Также есть возможность удалить конкретное значение (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 или написав собственные сериализаторы для сложных объектов.

Напишите первое сообщение!

Вы должны войти под своим аккаунтом чтобы оставлять комментарии