[Settings] Refactor for performance

Refactor DataDuringCallsPreferenceController in order to reduce the time
spend on constuct and initialize DataDuringCallsPreferenceController.

Bug: 141833767
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataDuringCallsPreferenceControllerTest
Merged-In: I484cafa739f9e6e58427894712f2bb7e2ed1f4ff
Change-Id: Id4947606a4919f06ae5ed6ddedd02399a2ee930f
This commit is contained in:
Bonian Chen
2020-04-19 22:11:09 +08:00
parent 7df1fb2af1
commit 570d5441d3

View File

@@ -49,10 +49,6 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen
public DataDuringCallsPreferenceController(Context context,
String 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) {
@@ -63,15 +59,27 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen
@OnLifecycleEvent(ON_RESUME)
public void onResume() {
if (mChangeListener == null) {
mChangeListener = new SubscriptionsChangeListener(mContext, this);
}
mChangeListener.start();
if (mMobileDataContentObserver == null) {
mMobileDataContentObserver = new MobileDataContentObserver(
new Handler(Looper.getMainLooper()));
mMobileDataContentObserver.setOnMobileDataChangedListener(() -> refreshPreference());
}
mMobileDataContentObserver.register(mContext, mSubId);
}
@OnLifecycleEvent(ON_PAUSE)
public void onPause() {
if (mChangeListener != null) {
mChangeListener.stop();
}
if (mMobileDataContentObserver != null) {
mMobileDataContentObserver.unRegister(mContext);
}
}
@Override
public void displayPreference(PreferenceScreen screen) {
@@ -103,6 +111,9 @@ public class DataDuringCallsPreferenceController extends TelephonyTogglePreferen
@Override
public void updateState(Preference preference) {
super.updateState(preference);
if (preference == null) {
return;
}
preference.setVisible(isAvailable());
}