私はkotlinを使ってアンドロイドに私のSharedPreference
のヘルパークラスを作成したいと思います。 残念ながら私はContext
が必要で、私はそれをパラメータとして毎回電話を設定したくないです。Android - SharedPreferences - コンテキスト
私は、コンテキストのためのコンパニオンオブジェクトを使用すると、アプリケーション起動時に設定した場合、私は次のエラーを取得する:Do not place Android context classes in static fields; this is a memory leak (and also breaks Instant Run)
私は好みを呼び出し、どのように毎回それを渡さずに、コンテキストを取得しますか?
var isWorking: Boolean
get() = getBoolean(IS_WORKING)
set(isWorking) = setPreference(IS_WORKING, isWorking)
private fun setPreference(key: String, value: Boolean) {
val editor = settings.edit()
editor.putBoolean(key, value)
editor.commit()
}
private val settings: SharedPreferences by lazy {
context.getSharedPreferences("prefs", Context.MODE_PRIVATE)
}
これはあなたの質問には答えませんが、毎回そのコンテキストを渡す必要があります。メッセージが示すように、アクティビティーが終了したときに操作がまだ実行中であれば、アクティビティーがリークする可能性があります。私の経験では、何らかの操作が行われたときにコンテキストを受け取るPreferenceHelperクラスを常に見ていました。 –