Android 如何使用Preference.OnPreferenceChangeListener模拟onPreferenceChanged()

Android 如何使用Preference.OnPreferenceChangeListener模拟onPreferenceChanged(),android,android-preferences,android-jetpack,android-settings,Android,Android Preferences,Android Jetpack,Android Settings,Android Jetpack首选项有一个click listener首选项。On PreferenceClickListener和Preference change listener首选项。On PreferenceChangeListener。但是,当值更改时,没有任何侦听器,即每当成功更新首选项时调用的侦听器 用例 我有一个后台服务,它做了大量的工作。它从多个地方开始,然后从SharedReferences读取一个值 现在,问题是,当服务从OnPreferenceChange()启动并尝试

Android Jetpack首选项有一个click listener
首选项。On PreferenceClickListener
和Preference change listener
首选项。On PreferenceChangeListener
。但是,当值更改时,没有任何侦听器,即每当成功更新首选项时调用的侦听器

用例

我有一个后台服务,它做了大量的工作。它从多个地方开始,然后从
SharedReferences
读取一个值

现在,问题是,当服务从
OnPreferenceChange()
启动并尝试读取
SharedReferences
值时,该值尚未更新

  override fun onPreferenceChange(preference: Preference?, newValue: Any?): Boolean {

    // here newValue is of no use
     startService()

    return true
}
你可以用

val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
sharedPreferences.registerOnSharedPreferenceChangeListener { _, _ -> 
        startService()
}
应在更改首选项后调用此函数