OSDN Git Service

Try not to crash while AppInfo is finishing
authorJason Monk <jmonk@android.com>
Fri, 15 May 2015 17:05:46 +0000 (13:05 -0400)
committerThe Android Automerger <android-build@google.com>
Mon, 18 May 2015 21:24:01 +0000 (14:24 -0700)
Bug: 21025020
Change-Id: Iebb9e6b24ca503f87b5648f0aaf02dde01903488

src/com/android/settings/applications/AppInfoBase.java
src/com/android/settings/applications/InstalledAppDetails.java

index 442b1d8..ef90fd9 100644 (file)
@@ -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) {
index c364585..4eb86a9 100755 (executable)
@@ -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);