From 07b2d119ec62dc141b61b70b00066aa94bbfdedf Mon Sep 17 00:00:00 2001 From: Jason Monk Date: Fri, 15 May 2015 13:05:46 -0400 Subject: [PATCH] Try not to crash while AppInfo is finishing Bug: 21025020 Change-Id: Iebb9e6b24ca503f87b5648f0aaf02dde01903488 --- src/com/android/settings/applications/AppInfoBase.java | 4 ++++ src/com/android/settings/applications/InstalledAppDetails.java | 10 +++++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java index 442b1d8bff..ef90fd96aa 100644 --- a/src/com/android/settings/applications/AppInfoBase.java +++ b/src/com/android/settings/applications/AppInfoBase.java @@ -69,9 +69,12 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment // Dialog identifiers used in showDialog protected static final int DLG_BASE = 0; + protected boolean mFinishing; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + mFinishing = false; mState = ApplicationsState.getInstance(getActivity().getApplication()); mSession = mState.newSession(this); @@ -147,6 +150,7 @@ public abstract class AppInfoBase extends SettingsPreferenceFragment intent.putExtra(ManageApplications.APP_CHG, appChanged); SettingsActivity sa = (SettingsActivity)getActivity(); sa.finishPreferencePanel(this, Activity.RESULT_OK, intent); + mFinishing = true; } protected void showDialogInner(int id, int moveErrorCode) { diff --git a/src/com/android/settings/applications/InstalledAppDetails.java b/src/com/android/settings/applications/InstalledAppDetails.java index c3645853ac..4eb86a9079 100755 --- a/src/com/android/settings/applications/InstalledAppDetails.java +++ b/src/com/android/settings/applications/InstalledAppDetails.java @@ -244,14 +244,15 @@ public class InstalledAppDetails extends AppInfoBase @Override public void onResume() { super.onResume(); + if (mFinishing) { + return; + } AppItem app = new AppItem(mAppEntry.info.uid); app.addUid(mAppEntry.info.uid); getLoaderManager().restartLoader(LOADER_CHART_DATA, ChartDataLoader.buildArgs(getTemplate(getContext()), app), mDataCallbacks); - if (mPackageInfo != null) { - new BatteryUpdater().execute(); - } + new BatteryUpdater().execute(); } @Override @@ -269,6 +270,9 @@ public class InstalledAppDetails extends AppInfoBase public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); + if (mFinishing) { + return; + } handleHeader(); mNotificationPreference = findPreference(KEY_NOTIFICATION); -- 2.11.0