Reduce Data Saver Settings launch time
- The Unrestricted data need to take a long time to load from ApplicationsState.loader (more then 256ms) - Load Unrestricted data after Settings launched Bug: 227863469 Test: manual test, analyze results with perfetto UI. Change-Id: I5e49a2b0f2b563b426354f4d2e6e650dcc02c98b
This commit is contained in:
@@ -55,17 +55,21 @@ public class DataSaverSummary extends SettingsPreferenceFragment
|
|||||||
// Flag used to avoid infinite loop due if user switch it on/off too quicky.
|
// Flag used to avoid infinite loop due if user switch it on/off too quicky.
|
||||||
private boolean mSwitching;
|
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
|
@Override
|
||||||
public void onCreate(Bundle icicle) {
|
public void onCreate(Bundle icicle) {
|
||||||
super.onCreate(icicle);
|
super.onCreate(icicle);
|
||||||
|
|
||||||
addPreferencesFromResource(R.xml.data_saver);
|
addPreferencesFromResource(R.xml.data_saver);
|
||||||
mUnrestrictedAccess = findPreference(KEY_UNRESTRICTED_ACCESS);
|
mUnrestrictedAccess = findPreference(KEY_UNRESTRICTED_ACCESS);
|
||||||
mApplicationsState = ApplicationsState.getInstance(
|
|
||||||
(Application) getContext().getApplicationContext());
|
|
||||||
mDataSaverBackend = new DataSaverBackend(getContext());
|
mDataSaverBackend = new DataSaverBackend(getContext());
|
||||||
mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend);
|
|
||||||
mSession = mApplicationsState.newSession(this, getSettingsLifecycle());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -83,15 +87,21 @@ public class DataSaverSummary extends SettingsPreferenceFragment
|
|||||||
mDataSaverBackend.refreshAllowlist();
|
mDataSaverBackend.refreshAllowlist();
|
||||||
mDataSaverBackend.refreshDenylist();
|
mDataSaverBackend.refreshDenylist();
|
||||||
mDataSaverBackend.addListener(this);
|
mDataSaverBackend.addListener(this);
|
||||||
|
if (mDataUsageBridge != null) {
|
||||||
mDataUsageBridge.resume(true /* forceLoadAllApps */);
|
mDataUsageBridge.resume(true /* forceLoadAllApps */);
|
||||||
|
} else {
|
||||||
|
getView().post(mLoadAppRunnable);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPause() {
|
public void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
mDataSaverBackend.remListener(this);
|
mDataSaverBackend.remListener(this);
|
||||||
|
if (mDataUsageBridge != null) {
|
||||||
mDataUsageBridge.pause();
|
mDataUsageBridge.pause();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSwitchChanged(Switch switchView, boolean isChecked) {
|
public void onSwitchChanged(Switch switchView, boolean isChecked) {
|
||||||
@@ -132,24 +142,7 @@ public class DataSaverSummary extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExtraInfoUpdated() {
|
public void onExtraInfoUpdated() {
|
||||||
if (!isAdded()) {
|
updateUnrestrictedAccessSummary();
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -179,12 +172,12 @@ public class DataSaverSummary extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAllSizesComputed() {
|
public void onAllSizesComputed() {
|
||||||
|
updateUnrestrictedAccessSummary();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLauncherInfoChanged() {
|
public void onLauncherInfoChanged() {
|
||||||
|
updateUnrestrictedAccessSummary();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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 =
|
public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
|
||||||
new BaseSearchIndexProvider(R.xml.data_saver) {
|
new BaseSearchIndexProvider(R.xml.data_saver) {
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user