如何在偏好更改时更新 backstack 中的 activity?

How to update activity in backstack on preference change?

我有一篇 activity,其中包含一篇 WordPress 文章。文章的文字大小可以在设置中修改。加载新文章现在将显示修改后的文本大小。但是,此更改不会影响后台堆栈中的文章活动,它仍然显示旧的文本大小。

处理这种情况的最佳方法是什么?

我尝试了 OnSharedPreferenceChangeListener,但我认为后台堆栈 activity 无法接收更改事件,因为它在后台堆栈中。我现在正在考虑保留偏好更改的时间,并将其与原始文章 activity 在 onResume 中实例化的时间进行比较,然后相应地重新加载文章。

有更好的方法吗?

您可以保留实际值而不是时间,但除此之外:不。 暂停的 activity 不应该做任何事情,即使它可能以某种方式发生。 onResume 是去这里的路。

进一步说明:暂停的 Activity 理论上仍可被其他引用使用,但暂停的 Activity 可能会在 Android 内存不足时随时卸载.当您 return 到它时,它会从 savedInstanceState 恢复。因此,使用暂停的 Activity 是不可靠的,因为它可能会或可能不会被卸载。

在 onResume 方法中,执行以下操作:

  @Override
protected void onResume(){
SharedPreferences Prefs =  PreferenceManager.getDefaultSharedPreferences(this);
     int fontSize = Prefs.getInteger("font_size", 16);
}
.....
// then set your text font size ...