Fix bug #16660405 Stability: ISE in Settings: Observer ...
com.android.settings.SettingsPreferenceFragment$1@3c1d9ecb was not registered - use a monitor to control registering / unregistering Change-Id: Id66dd698abf92643c97938e2091c3be38e6b78bd
This commit is contained in:
@@ -66,6 +66,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
private boolean mPreferenceHighlighted = false;
|
private boolean mPreferenceHighlighted = false;
|
||||||
private Drawable mHighlightDrawable;
|
private Drawable mHighlightDrawable;
|
||||||
|
|
||||||
|
private Object mRegisterLock = new Object();
|
||||||
private boolean mIsDataSetObserverRegistered = false;
|
private boolean mIsDataSetObserverRegistered = false;
|
||||||
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
||||||
@Override
|
@Override
|
||||||
@@ -153,16 +154,20 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void registerObserverIfNeeded() {
|
public void registerObserverIfNeeded() {
|
||||||
if (!mIsDataSetObserverRegistered) {
|
synchronized (mRegisterLock) {
|
||||||
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
if (!mIsDataSetObserverRegistered) {
|
||||||
mIsDataSetObserverRegistered = true;
|
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
||||||
|
mIsDataSetObserverRegistered = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void unregisterObserverIfNeeded() {
|
public void unregisterObserverIfNeeded() {
|
||||||
if (mIsDataSetObserverRegistered) {
|
synchronized (mRegisterLock) {
|
||||||
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
if (mIsDataSetObserverRegistered) {
|
||||||
mIsDataSetObserverRegistered = false;
|
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
||||||
|
mIsDataSetObserverRegistered = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user