Android 是否有办法倾听特定偏好的变化(在偏好活动之外)

Android 是否有办法倾听特定偏好的变化(在偏好活动之外),android,sharedpreferences,preference,Android,Sharedpreferences,Preference,想知道“倾听”偏好活动之外的特定偏好变化的建议方式。我有一个PreferenceActivity来处理我所有的SharedReference,但我也有一个MapActivity来处理map内容。如何在MapActivity中检测特定首选项中的更改,例如MapType首选项 我知道的选择 在my MapActivity上实现OnSharedPreferenceChangeListener。我可以将MapActivity设置为侦听器,并检查传入的首选项是否是我关心的。问题是,我会被要求更改所有的首选

想知道“倾听”偏好活动之外的特定偏好变化的建议方式。我有一个PreferenceActivity来处理我所有的SharedReference,但我也有一个MapActivity来处理map内容。如何在MapActivity中检测特定首选项中的更改,例如MapType首选项

我知道的选择

  • 在my MapActivity上实现OnSharedPreferenceChangeListener。我可以将MapActivity设置为侦听器,并检查传入的首选项是否是我关心的。问题是,我会被要求更改所有的首选项,而不仅仅是我关心的MapType首选项

  • 在我的MapActivity中的onResume方法中,检查我关心的首选项,看看它是否更改(因为现在设置的更改意味着我转到一个新活动,然后在完成后返回map活动)。我不喜欢这样,因为如果我改变设置MapType的方式(即如果它不需要新的活动),我就不会点击Resume

  • ???不确定这是否可行,但在MapActivity(如onCreate)中,我获得了MapType首选项类(不认为这是可能的)。但是如果我能得到一个偏好,实际上是偏好类,我可以使用偏好。OnPreferenceChangeListener()和我将只监听要更改的首选项


  • 我根据需要获得共享首选项,而不是存储它的静态快照。因此,如果它曾经从任何位置更改,它将立即被拾取,但在MapType更改的情况下,我可能需要在它更改时立即了解它。即,如果在首选项更改时显示地图,我需要更改地图。我不能一直循环检查ti是否改变并做些什么。我可以听,但重点是我似乎必须听所有的东西,而不仅仅是我想听的东西。