Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8c115cca authored by Weng Su's avatar Weng Su Committed by Android (Google) Code Review
Browse files

Merge "Reduce Data Saver Settings launch time"

parents dba6ba52 039ef374
Loading
Loading
Loading
Loading
+36 −26
Original line number Diff line number Diff line
@@ -55,17 +55,21 @@ public class DataSaverSummary extends SettingsPreferenceFragment
    // Flag used to avoid infinite loop due if user switch it on/off too quicky.
    private boolean mSwitching;

    private Runnable mLoadAppRunnable = () -> {
        mApplicationsState = ApplicationsState.getInstance(
                (Application) getContext().getApplicationContext());
        mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend);
        mSession = mApplicationsState.newSession(this, getSettingsLifecycle());
        mDataUsageBridge.resume(true /* forceLoadAllApps */);
    };

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);

        addPreferencesFromResource(R.xml.data_saver);
        mUnrestrictedAccess = findPreference(KEY_UNRESTRICTED_ACCESS);
        mApplicationsState = ApplicationsState.getInstance(
                (Application) getContext().getApplicationContext());
        mDataSaverBackend = new DataSaverBackend(getContext());
        mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend);
        mSession = mApplicationsState.newSession(this, getSettingsLifecycle());
    }

    @Override
@@ -83,15 +87,21 @@ public class DataSaverSummary extends SettingsPreferenceFragment
        mDataSaverBackend.refreshAllowlist();
        mDataSaverBackend.refreshDenylist();
        mDataSaverBackend.addListener(this);
        if (mDataUsageBridge != null) {
            mDataUsageBridge.resume(true /* forceLoadAllApps */);
        } else {
            getView().post(mLoadAppRunnable);
        }
    }

    @Override
    public void onPause() {
        super.onPause();
        mDataSaverBackend.remListener(this);
        if (mDataUsageBridge != null) {
            mDataUsageBridge.pause();
        }
    }

    @Override
    public void onSwitchChanged(Switch switchView, boolean isChecked) {
@@ -132,24 +142,7 @@ public class DataSaverSummary extends SettingsPreferenceFragment

    @Override
    public void onExtraInfoUpdated() {
        if (!isAdded()) {
            return;
        }
        int count = 0;
        final ArrayList<AppEntry> allApps = mSession.getAllApps();
        final int N = allApps.size();
        for (int i = 0; i < N; i++) {
            final AppEntry entry = allApps.get(i);
            if (!ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER.filterApp(entry)) {
                continue;
            }
            if (entry.extraInfo != null && ((AppStateDataUsageBridge.DataUsageState)
                    entry.extraInfo).isDataSaverAllowlisted) {
                count++;
            }
        }
        mUnrestrictedAccess.setSummary(getResources().getQuantityString(
                R.plurals.data_saver_unrestricted_summary, count, count));
        updateUnrestrictedAccessSummary();
    }

    @Override
@@ -179,12 +172,12 @@ public class DataSaverSummary extends SettingsPreferenceFragment

    @Override
    public void onAllSizesComputed() {

        updateUnrestrictedAccessSummary();
    }

    @Override
    public void onLauncherInfoChanged() {

        updateUnrestrictedAccessSummary();
    }

    @Override
@@ -192,6 +185,23 @@ public class DataSaverSummary extends SettingsPreferenceFragment

    }

    private void updateUnrestrictedAccessSummary() {
        if (!isAdded() || isFinishingOrDestroyed() || mSession == null) return;

        int count = 0;
        for (AppEntry entry : mSession.getAllApps()) {
            if (!ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER.filterApp(entry)) {
                continue;
            }
            if (entry.extraInfo != null && ((AppStateDataUsageBridge.DataUsageState)
                    entry.extraInfo).isDataSaverAllowlisted) {
                count++;
            }
        }
        mUnrestrictedAccess.setSummary(getResources().getQuantityString(
                R.plurals.data_saver_unrestricted_summary, count, count));
    }

    public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
            new BaseSearchIndexProvider(R.xml.data_saver) {