1

私のアプリにはアクティビティとサービスがあります。私が最初にそれを書いたとき、MODE_PRIVATE を使用して commonsware book から sharedPreferences を使用することを学びました。アプリが成長したため、この投稿の範囲を超えた理由により、別のプロセスでサービスを実行する必要があります。

マニフェスト ファイルの android:process ステートメントでコロンで始まる名前を指定することで、これを実行できることがわかりました。

ただし、現在、私のアクティビティとサービスは同じ sharedPreferences を読み取っていません。この問題を調査していると、MODE_MULTI_PROCESS を使用することをお勧めします。しかし、私はそれを指定する方法を理解できません。

SharedPreferences myMemory = getSharedPreferences("myMemory", MODE_MULTI_PROCESS);

Eclipse は MODE_PRIVATE や MODE_WORLD_READABLE を見つけることができるように MODE_MULTI_PROCESS を見つけることができないため、これは機能しません。

では、MODE_MULTI_PROCESS を指定するにはどうすればよいでしょうか??
ありがとう、ゲイリー

4

1 に答える 1

0

MODE_MULTI_PROCESS は API レベル 11 で追加されました。表示されない場合は、古いバージョンをターゲットにしている可能性があります。

マニフェストで対象とする Android のバージョンを変更するか、実行時に Build.VERSION.SDK_INT を使用して新しいプラットフォームを検出する必要があります。以前のバージョンではマルチプロセスが暗示されています。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
   myMemory = context.getSharedPreferences("myMemory", Context.MODE_MULTI_PROCESS);
} else {
   myMemory = context.getSharedPreferences("myMemory", Context.MODE_PRIVATE);
}

参照: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

于 2013-11-27T04:40:38.170 に答える