Android. Збереження даних в постійне сховище

січня
25
2012

Збереження даних в постійне сховище на платформі 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 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 або написавши власні серіалізатори для складних об'єктів.

Напишіть перше повідомлення!

Ви повинні увійти під своїм аккаунтом щоб залишати коментарі