Merge "[Settings] Refactor for performance" into rvc-dev

This commit is contained in:
Bonian Chen
2020-05-05 08:34:01 +00:00
committed by Android (Google) Code Review

View File

@@ -49,10 +49,6 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen
public DataDuringCallsPreferenceController(Context context, public DataDuringCallsPreferenceController(Context context,
String preferenceKey) { String preferenceKey) {
super(context, preferenceKey); super(context, preferenceKey);
mChangeListener = new SubscriptionsChangeListener(mContext, this);
mMobileDataContentObserver = new MobileDataContentObserver(
new Handler(Looper.getMainLooper()));
mMobileDataContentObserver.setOnMobileDataChangedListener(()->refreshPreference());
} }
public void init(Lifecycle lifecycle, int subId) { public void init(Lifecycle lifecycle, int subId) {
@@ -63,14 +59,26 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen
@OnLifecycleEvent(ON_RESUME) @OnLifecycleEvent(ON_RESUME)
public void onResume() { public void onResume() {
if (mChangeListener == null) {
mChangeListener = new SubscriptionsChangeListener(mContext, this);
}
mChangeListener.start(); mChangeListener.start();
if (mMobileDataContentObserver == null) {
mMobileDataContentObserver = new MobileDataContentObserver(
new Handler(Looper.getMainLooper()));
mMobileDataContentObserver.setOnMobileDataChangedListener(() -> refreshPreference());
}
mMobileDataContentObserver.register(mContext, mSubId); mMobileDataContentObserver.register(mContext, mSubId);
} }
@OnLifecycleEvent(ON_PAUSE) @OnLifecycleEvent(ON_PAUSE)
public void onPause() { public void onPause() {
mChangeListener.stop(); if (mChangeListener != null) {
mMobileDataContentObserver.unRegister(mContext); mChangeListener.stop();
}
if (mMobileDataContentObserver != null) {
mMobileDataContentObserver.unRegister(mContext);
}
} }
@Override @Override
@@ -103,6 +111,9 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen
@Override @Override
public void updateState(Preference preference) { public void updateState(Preference preference) {
super.updateState(preference); super.updateState(preference);
if (preference == null) {
return;
}
preference.setVisible(isAvailable()); preference.setVisible(isAvailable());
} }