OSDN Git Service

Don't crash onServiceDisconnected...
authorDan Sandler <dsandler@android.com>
Mon, 25 Sep 2017 21:40:04 +0000 (17:40 -0400)
committerDan Sandler <dsandler@android.com>
Mon, 25 Sep 2017 21:43:16 +0000 (17:43 -0400)
...if destroy() hasn't already been called through some
other codepath.

Bug: 65249720
Test: runtest -x core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
Change-Id: I5f90548e437986d8585390578f4ceecd57cc3473

core/java/com/android/internal/app/ChooserActivity.java

index 2cab009..bb7ca02 100644 (file)
@@ -1580,8 +1580,8 @@ public class ChooserActivity extends ResolverActivity {
                 } catch (RemoteException e) {
                     Log.e(TAG, "Querying ChooserTargetService " + name + " failed.", e);
                     mChooserActivity.unbindService(this);
-                    destroy();
                     mChooserActivity.mServiceConnections.remove(this);
+                    destroy();
                 }
             }
         }
@@ -1597,7 +1597,6 @@ public class ChooserActivity extends ResolverActivity {
                 }
 
                 mChooserActivity.unbindService(this);
-                destroy();
                 mChooserActivity.mServiceConnections.remove(this);
                 if (mChooserActivity.mServiceConnections.isEmpty()) {
                     mChooserActivity.mChooserHandler.removeMessages(
@@ -1605,6 +1604,7 @@ public class ChooserActivity extends ResolverActivity {
                     mChooserActivity.sendVoiceChoicesIfNeeded();
                 }
                 mConnectedComponent = null;
+                destroy();
             }
         }