SharedPreferencesが変更されたときにリモートサービスを更新したいです。以下は、APIレベル8(Android 2.2)での使用でした。アクティビティとリモートサービスの間でSharedPreferencesを共有できません - Androidのバグや機能?
私のアクティビティには、サービスバインダオブジェクトを介してリモートサービスを呼び出すOnPreferencesChangedListener
があります。リモートサービスへのインタフェースは、リスナーによって呼び出されるメソッドprefsChanged(void)
を提供します。その後、インターフェースメソッドは、アラートが何らかのアクションをトリガーする新しい時刻を計算します。 この時刻もSharedPreferences
に保存され、ブロードキャストが送信されます。ブロードキャストは私の活動によって受信され、新しいアラートタイムを表示できるようになりました。 アクティビティとリモートサービスは、SharedPreferences
オブジェクトを、PreferenceManager.getDefaultSharedPreferences(Context)
と応答する静的メソッドGetPrefs(Context)
を呼び出して取得します。
APIレベル15(Android 4.0.3)ではこれが機能しなくなりました。デバッグは、リモートサービスが異なる(古い?)値を保持している他のバージョンのSharedPreferencesを見ることを示します。 SharedPreferencesImplオブジェクトのログには、アクティビティとリモートサービスからのログ出力時に異なるアドレスが表示されます。ファイルシステムは、共有プリファレンスファイルを1つだけ表示します。
これはバグですか、私のコードはAPIレベル8でうまく動作しましたか? ご意見をお待ちしております。
する必要があります私はすでに、私は行動の変更を説明するための何かを見つけることができませんでしたAPIレベル8と15との間の変更を検討しました。 – Stefan
この質問も参照してください。http://stackoverflow.com/q/8714793/1127492 – Stefan