我有一个偏好,我动态放置字符串并重新加载活动以立即显示更改,如下所示:
void restartActivity() {
Intent intent = getIntent();
finish();
startActivity(intent);
}
问题是当特定值具有特定值时,我正在更改其他一些首选项值。这会导致 SHAREDPREFERENCELISTENER 一次又一次地运行,从而导致上述方法一次又一次地运行。
出于某种原因,这会导致在顶部创建多个首选项屏幕。
为了清除一些东西,我确实有这个:
@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}
@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
protected void onDestroy() {
getPreferenceScreen().getSharedPreferences()
.unregisterOnSharedPreferenceChangeListener(this);
super.onDestroy();
}
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
PreferenceScreen screen = this.getPreferenceScreen();
关于如何限制功能使其不会一遍又一遍地创建屏幕的任何想法?