Android Jetpack首选项具有一个点击侦听器Preference.OnPreferenceClickListener
和首选项更改侦听器Preference.OnPreferenceChangeListener
。但是,更改时没有任何侦听器,即,当成功更新首选项时都会调用该侦听器。
用例
我有一个后台服务,可以完成很多工作。它从多个地方开始,一直到SharedPreferences
读取一个值。
现在,问题是,当服务从OnPreferenceChange()
开始并尝试读取SharedPreferences
的值时,该值尚未更新。
override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {
// here newValue is of no use
startService()
return true
}
答案 0 :(得分:1)
您可以使用
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
sharedPreferences.registerOnSharedPreferenceChangeListener { _, _ ->
startService()
}
应该在更改首选项后调用