如何在偏好更改时更新 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 ...
我有一篇 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 ...