SharedPreferences
でAndroid
軽量なストレージ・クラスのプラットフォームは簡単にデータを格納するために、使用することは非常にシンプルで私たちを提供し、ソフトウェアの設定パラメータを格納するために特に適したデータを読み込みます。:できるだけのような単純なデータ型、保存SharedPreferences String
、int
というように。データの一般的に複雑なタイプだろうBase64
エンコードさは、文字列の形式で格納されています。SharedPreferences
後ろにあるxml
ファイルはに格納され、データファイルを格納する/data/data/<package name>/shared_prefs
ディレクトリ。
使用すると、SharedPreferences
保存されkey-value
、次のように手順は、次のとおりです。
- 使用
Activity
クラスgetSharedPreferences
得るための方法をSharedPreferences
対象に、前記格納されたkey-value
からファイル名をgetSharedPreferences
指定する最初の引数。 - 使用する
SharedPreferences
インターフェイスをedit
取得するためにSharedPreferences.Editor
オブジェクトを。 - スルー
SharedPreferences.Editor
インターフェースputXxx
格納する方法key-value
ペアXxx
異なるタイプのデータを表しています。たとえば、次の文字列型value
で必要とされるputString
方法。 - することにより
SharedPreferences.Editor
、インタフェースcommit
保存方法key-value
右、commit
方法は、運用データベースのトランザクションを提出することと同じです。
使用して、SharedPreferences
保存されkey-value
、次のコードのために:
SharedPreferences sharedPreferences = getSharedPreferences("test", Context.MODE_PRIVATE);
Editor editor = sharedPreferences.edit();//获取编辑器
editor.putString("name", "小明");
editor.putInt("age", 24);
editor.commit();//提交修改
生成されたtest.xml
次のようにコンテンツファイルを:
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="name">小明</string>
<int name="age" value="24" />
</map>
使用するSharedPreferences
コードは次のようにしている読み出しデータを:
SharedPreferences sharedPreferences= getSharedPreferences("test",
Activity.MODE_PRIVATE);
// 使用getString方法获得value,注意第2个参数是value的默认值
String name =sharedPreferences.getString("name", "");
int age =sharedPreferences.getInt("age", 0);
SharedPreferences
4つの動作モード:
Context.MODE_PRIVATE:为默认操作模式,代表该文件是私有数据,只能被应用本身访问,在该模式下,写入的内容会覆盖原文件的内容
Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件.
Context.MODE_WORLD_READABLE:表示当前文件可以被其他应用读取.
Context.MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入.
使用すると、SharedPreferences
他のアプリケーションで読み取るPreference
:
他のアプリケーションで読み取るPreference
前提条件は次のとおりです。preference
時間が作成され、指定Context.MODE_WORLD_READABLE
またはContext.MODE_WORLD_WRITEABLE
許可。
たとえば:そこ<package name>
でcom.xiuxiuing.test
次のステートメントを使用して作成したアプリケーションpreference
getSharedPreferences("test", Context.MODE_WORLD_READABLE);
私たちは、上記のアプリケーションにアクセスできるようにするpreference
、あなたの最初の上記のアプリケーションを作成する必要がありますContext
、その後、Context
アクセスpreference
、アクセスをpreference
アプリケーションがパッケージの下に配置されたときにshared_prefs
ディレクトリを見つけるために、preference
以下のように、:
Context context = createPackageContext("com.xiuxiuing.test", Context.CONTEXT_IGNORE_SECURITY);
SharedPreferences sharedPreferences = context.getSharedPreferences("test", Context.MODE_WORLD_READABLE);
String name = sharedPreferences.getString("name", "");
int age = sharedPreferences.getInt("age", 0);
説明:
SharedPreferences.Editor
存在するapply
とcommit
データ編集を提出するための二つの方法、これらの2つの方法の違いは、次のとおりです。
-
apply
なし戻り値とcommit
戻りboolean
提出が正常に変更があるかどうかを示します -
apply
データアトミック真に非同期ハードウェアディスクに提出した後、メモリにコミット、およびを変更することであり、commit
それゆえ、複数の同時提出で、ディスクのハードウェア同期にコミットされcommit
、彼らは待機を扱っているときcommit
の操作でディスクに保存され、それによって効率を低下させます。そして、apply
ちょうど呼び出しが続く原子のコンテンツを、提出することはapply
、それによってある程度効率の多くを改善し、メモリデータの前面を覆って直接動作します。 -
apply
この方法は、任意のプロンプト失敗を要求しません。
プロセス、以来sharedPreference
、著者の結果は気にしない場合は、単一インスタンス、一般的にそれが使用することをお勧めし、同時実行の競合を表示されませんapply
、もちろん、成功の提出と追従動作を確保する必要性は、それが使用する必要がありますcommit
。