アクティビティと、別のプロセスで実行されている生成されたリモート サービスの間で、適切なデータ共有戦略があるかどうか疑問に思っていました。これまでに3つの方法を試しましたが、どれもうまくいきませんでした。
使用するApplication
私が最初に考えたのは、Application
2つの異なるプロセス間で共有されるのは、単一のアプリケーションからのものであるためです。
しかし、そうではありません。メインActivity
が作成される前に、Application
意志が作成されることに気づきました。リモート サービスを生成すると、別の新しいApplication
インスタンスも作成されます。
使用するPreferences
私の最初の考えは、これはファイルベースだということです。したがって、Preferences
throughに値を書き込むたびにsharedPreferences.edit().putString(key, value).commit()
、変更がファイルにコミットされます。別のプロセスが最新の変更を読み取ることができるはずです。
しかし、そうではありません。私の推測では、これは、私のサービスでは、Preferences
サービスの起動時にインスタンスを 1 回だけ取得するためPreferenceManager.getDefaultSharedPreferences(application)
です。初回のみファイルから値を読み取ります。後続の呼び出しgetString
はメモリから読み取られます。
グローバル静的変数を使用する
Activity
とリモートService
は 2 つの異なるプロセスにあるため、機能しません。それらは2つの異なるメモリ空間を持っています。
私が試すことができるより良い戦略はありますか?