基本的な質問 - PreferenceActivity
を実装するとOnSharedPreferenceChangeListener
を実装する必要がありますか?または、この機能を別のクラスで定義する必要がありますか?他のアプローチに比べて何らかの理由がありますか?Android:OnSharedPreferenceChangeListenerをどこに定義/登録する必要がありますか
また、リスナーの登録先はどこですか?私はthe docsを意味し、常識はそれぞれonResume/onPause
に登録/登録解除を指示しますが、azillionregistrationsにはonCreate
が表示されます。
また、登録解除に失敗した場合には、私はあまり確かではありません(hereは登録されていない可能性があります。onStop
は必ず呼び出されることはありません)。私は私の他の活動の一つに戻ったら、だから私は、インスタンスのために持っている場合
class MyPref extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
SharedPreferences sharedPreferences;
// init sharedPreferences
onStart(){
sharedPreferences.registerOnSharedPreferenceChangeListener(this);
}
// no unregistration
}
これはMyPref
インスタンスをリークしますか?
最後に、同じ考慮事項がOnPreferenceChangeListener
に適用されますか?
編集:実際に登録を解除する方法はありません。OnPreferenceChangeListener
- 私は盲目ですか?
_登録と登録解除 - なぜですか?リスナーの登録を解除する必要はありませんか?私が尋ねたリークはどうでしたか? –
登録を解除する必要はありません。アプリを殺すことを決めた場合、システムは単にそれを殺すだけです。さらに、各アプリケーションは独自のVMインスタンスで実行されます。このVMインスタンスも強制終了されるため、登録を解除する必要はなく、リークは発生しません。プロセスが終了するとすべてのメモリが解放されます(カーネルはその処理を行います) 。そのため、データをonPauseまたはonStopで永続ストレージに保存することをお勧めします。しかし、これは 'onPause'と' onResume'の間では起こりません。 – Shade
@ Mr_and_Mrs_D、あなたはこの質問に対してより良い答えを見つけましたか?もしそうなら、皆の利益のためにそれに答えるのはなぜですか? – Shade