Fix Settings crash on changing device orientation

- AppDataUsage assign preferences to Applist in loaderCallback.
When device rotate we will assign preference to Applist second
time which throw IllegalStateException Exception. We will use
restartLoader which create new loader rather than use existed
loader.

Change-Id: I540d645e930a29f989c4fe374e2103ca201da198
Fixes: 118195540
Test: manual
This commit is contained in:
Raff Tsai
2018-10-29 13:50:47 +08:00
parent 416ff0ab91
commit 1d88f4c61b
2 changed files with 7 additions and 4 deletions

View File

@@ -190,7 +190,8 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
if (mPackages.size() > 1) {
mAppList = (PreferenceCategory) findPreference(KEY_APP_LIST);
getLoaderManager().initLoader(LOADER_APP_PREF, Bundle.EMPTY, mAppPrefCallbacks);
LoaderManager.getInstance(this).restartLoader(LOADER_APP_PREF, Bundle.EMPTY,
mAppPrefCallbacks);
} else {
removePreference(KEY_APP_LIST);
}
@@ -221,7 +222,7 @@ public class AppDataUsage extends DataUsageBaseFragment implements OnPreferenceC
mDataSaverBackend.addListener(this);
}
mPolicy = services.mPolicyEditor.getPolicy(mTemplate);
getLoaderManager().restartLoader(LOADER_CHART_DATA,
LoaderManager.getInstance(this).restartLoader(LOADER_CHART_DATA,
ChartDataLoaderCompat.buildArgs(mTemplate, mAppItem), mChartDataCallbacks);
updatePrefs();
}

View File

@@ -177,7 +177,8 @@ public class AppDataUsageV2 extends DataUsageBaseFragment implements OnPreferenc
if (mPackages.size() > 1) {
mAppList = (PreferenceCategory) findPreference(KEY_APP_LIST);
getLoaderManager().initLoader(LOADER_APP_PREF, Bundle.EMPTY, mAppPrefCallbacks);
LoaderManager.getInstance(this).restartLoader(LOADER_APP_PREF, Bundle.EMPTY,
mAppPrefCallbacks);
} else {
removePreference(KEY_APP_LIST);
}
@@ -201,7 +202,8 @@ public class AppDataUsageV2 extends DataUsageBaseFragment implements OnPreferenc
if (mDataSaverBackend != null) {
mDataSaverBackend.addListener(this);
}
getLoaderManager().restartLoader(LOADER_APP_USAGE_DATA, null /* args */, mUidDataCallbacks);
LoaderManager.getInstance(this).restartLoader(LOADER_APP_USAGE_DATA, null /* args */,
mUidDataCallbacks);
updatePrefs();
}