SharedPreferences - Data保持
今日はSharedPreferencesでDataの保持に関してMemoします。
SharedPreferencesとは
アプリケーションが終了しても保存したいdataが在る場合、SharedPreferenceを利用し手軽にdataを保持・再取得することが出来ます。
Dataの保存
- SharedPreferences#edit() methodでSharedPreferences.Editor objectを取得する
- Editor#put~ methodでKeyに対する値を設定する(dataの型はBoolean, int, float, long, String)
- Editor#commit()で設定したdataをfileに保存する
Dataの取得
- Context#getSharedPreferences(String, int)でSharedPreferences objectを取得
- 第一引数のStringにはdataを保持するfile名を
- 第二引数のintには*operating modeを指定
- 型に合わせたget~ methodでKeyをもとに保存したdataを取得する
*Operating Modeは下記
Operating Mode | Description |
---|---|
MODE_PRIVATE | 外部のアプリからはアクセスできない |
MODE_WORLD_READABLE | 外部のアプリから読み取り可能 |
MODE_WORLD_WRITABLE | 外部のアプリから書き込み可能 |
んで実装
今回は、SharedPreferencesをwrappingするclassを作成してます。
前回のHandlerを学習する時に作成したcodeから後で利用したい思います。
package com.android.practice; import android.content.Context; import android.content.SharedPreferences; public class GameSettings { private static final String MODE_SETTINGS = "mode_settings"; public static final String CLEAR_HIT_COUNT_LEVEL = "Clear hit counts"; public static final int CLEAR_HIT_COUNT_LEVEL_INDEX = 0; public static final int CLEAR_HIT_COUNT_LEVEL_EASY = 5; public static final int CLEAR_HIT_COUNT_LEVEL_NORMAL = 10; public static final int CLEAR_HIT_COUNT_LEVEL_HARD = 15; public static final String SPEED_LEVEL = "Speed"; public static final int SPEED_LEVEL_INDEX = 1; public static final int SPEED_LEVEL_EASY = 5; public static final int SPEED_LEVEL_NORMAL = 10; public static final int SPEED_LEVEL_HARD = 15; public static final int INIT_SPEED = 5; public static final String[] SETTING_ITEMS = {CLEAR_HIT_COUNT_LEVEL, SPEED_LEVEL}; private Context mContext; private SharedPreferences mSettings; private SharedPreferences.Editor mSettingsEditor; public GameSettings(Context context){ mContext = context; //Context#getSharedPreferences(String, int)でSharedPreferences objectを取得 mSettings = mContext.getSharedPreferences(MODE_SETTINGS, Context.MODE_PRIVATE); //SharedPreferences#edit() methodでSharedPreferences.Editor objectを取得する mSettingsEditor = mSettings.edit(); } public int getClearHitCountLevel(){ //型に合わせたget~ methodでKeyをもとに保存したdataを取得する return mSettings.getInt(CLEAR_HIT_COUNT_LEVEL, CLEAR_HIT_COUNT_LEVEL_NORMAL); } public int getSpeedLevel(){ //型に合わせたget~ methodでKeyをもとに保存したdataを取得する return mSettings.getInt(SPEED_LEVEL, SPEED_LEVEL_NORMAL); } public void setClearHitCountLevel(int clearHitCountLevel){ //Editor#put~ methodでKeyに対する値を設定する mSettingsEditor.putInt(CLEAR_HIT_COUNT_LEVEL, clearHitCountLevel); } public void setSpeedLevel(int speedLevel){ //Editor#put~ methodでKeyに対する値を設定する mSettingsEditor.putInt(CLEAR_HIT_COUNT_LEVEL, speedLevel); } public void commit(){ //Editor#commit()で設定したdataをfileに保存する mSettingsEditor.commit(); } }
今後、前回(Handlerの回)、作成したものに設定画面を追加したいと考えてます。その際、SharedPreferencesが必要になってきます。
HashTag #android