AndroidはSharedPreferencesを使用してデータストレージを行う

2795 ワード

Androidが提供するSharedPreferencesは、Windowsプログラムでよく使用されるiniファイルと同様に、アプリケーションのプロパティ設定情報(データ型を区別)をKeyValue形式で保存します.例えば、ユーザの前回のログイン情報を保存するために使用することができる.メディア再生プログラムの音量設定や前回の再生位置などを保存できます.
SharedPreferencesを使用する場合によく使用される方法は、次のとおりです.
Context.getSharedPreferences (String name, int mode) 
Activity.getPreferences (int mode) 
SharedPreferences.edit(); 
SharedPreferences.getXXX(name, defaultValue); 
SharedPreferences.Editor.putXXX(name, value); 
SharedPreferences.Editor.commit();

手順:
データの保存
Log.d("SharedPreferences", "    ..."); 
//  SharedPreferences   
SharedPreferences settings = this.getSharedPreferences("shared_file", 0); 
//        
SharedPreferences.Editor editor = settings.edit(); 
editor.putString("name", "Kael Chen"); 
editor.putInt("age", 22); 
editor.commit(); 
Log.d("SharedPreferences", "      ");

データの読み込み
Log.d("SharedPreferences", "    ..."); 
SharedPreferences settings = this.getSharedPreferences("shared_file", 0); String name = settings.getString("name", "no name");
 int age = settings.getInt("age", 0); 
Log.d("SharedPreferences", "name:" + name + ", age:" + age); 
Log.d("SharedPreferences", "      "); 



コードを実行すると、data/data/pacakge name/shared_が表示されます.prefs/ディレクトリの下にsharedが1つ増えました.file.xmlファイル、ファイル名はgetSharedPreferencesメソッドに入力されたパラメータによって決定されます.
ファイルの内容は次のとおりです.
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map><string name="name">Kael Chen</string><int name="age" value="22" /></map>

iniファイルとは異なり、ここではデータのタイプを厳格に区別しているので、getXXXとputXXXが同じデータを使用する場合に使用するタイプは必ず一致しなければならないことがわかります.
また,getSharedPreferencesメソッドにおけるmodeパラメータとgetPreferencesとgetSharedPreferencesの違いに注目すべきである.getPreferencesとgetSharedPreferencesの違い:1、getPreferencesはActivityでのみ呼び出され、呼び出されたActivityの範囲内でのみ有効です.2、getSharedPreferencesはContextによって呼び出され、パケット範囲内で有効である.AndroidManifest.xmlファイルでは、私のテストプログラムで定義したパッケージがcnであるなど、パッケージの場所が定義されています.kael.sample、androidはdata/data/cnを確立します.kael.sample/shared_prefs/のディレクトリを作成し、その下にSharePreferencesファイルを生成します.したがって、SharedPreferencesが既に1つの場所で使用されており、対応するSharedPreferencesファイルが作成されている場合、別の場所でSharedPreferencesファイルを使用したい場合は、ファイルのパス規則に基づいて、SharedPreferencesを使用して生成されたパスが以前のSharedPreferencesファイルのパスと一致するかどうかを判断するだけです.同じアプリケーションに属していない場合でも、SharedPrefernessを共有できるかどうかを知ることができます(androidはパッケージ名に基づいてSharedPrefernessファイルの作成場所を決定するので、アプリケーション名には関係ありません).