Merge "Fix bug #16660405 Stability: ISE in Settings: Observer ... com.android.settings.SettingsPreferenceFragment$1@3c1d9ecb was not registered" into lmp-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
76307f52d0
@@ -66,6 +66,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
||||
private boolean mPreferenceHighlighted = false;
|
||||
private Drawable mHighlightDrawable;
|
||||
|
||||
private Object mRegisterLock = new Object();
|
||||
private boolean mIsDataSetObserverRegistered = false;
|
||||
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
||||
@Override
|
||||
@@ -153,16 +154,20 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
||||
}
|
||||
|
||||
public void registerObserverIfNeeded() {
|
||||
if (!mIsDataSetObserverRegistered) {
|
||||
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
||||
mIsDataSetObserverRegistered = true;
|
||||
synchronized (mRegisterLock) {
|
||||
if (!mIsDataSetObserverRegistered) {
|
||||
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
||||
mIsDataSetObserverRegistered = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void unregisterObserverIfNeeded() {
|
||||
if (mIsDataSetObserverRegistered) {
|
||||
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
||||
mIsDataSetObserverRegistered = false;
|
||||
synchronized (mRegisterLock) {
|
||||
if (mIsDataSetObserverRegistered) {
|
||||
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
||||
mIsDataSetObserverRegistered = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user