summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Dianne Hackborn <hackbod@google.com> 2012-04-30 18:29:20 -0700
committer Android (Google) Code Review <android-gerrit@google.com> 2012-04-30 18:29:20 -0700
commit414d50bce61be36dac88a6aaad138f99e2e26513 (patch)
treed878500c53912aa5cd9c985b2bd36438122ebb2a
parent5703bbfa3d119ee4643983422f9dfeb23b20f446 (diff)
parentd44713a63d51ba7f186c775c2a32f3c2ce018037 (diff)
Merge "Fix issue #6234928: android.app.IntentReceiverLeaked:" into jb-dev
-rw-r--r--core/java/com/android/internal/app/ResolverActivity.java14
1 files changed, 12 insertions, 2 deletions
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 5862d3e08b5e..51bbdf19b2dd 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -63,6 +63,7 @@ public class ResolverActivity extends AlertActivity implements
private TextView mClearDefaultHint;
private PackageManager mPm;
+ private boolean mRegistered;
private final PackageMonitor mPackageMonitor = new PackageMonitor() {
@Override public void onSomePackagesChanged() {
mAdapter.handlePackagesChanged();
@@ -100,6 +101,7 @@ public class ResolverActivity extends AlertActivity implements
ap.mOnClickListener = this;
mPackageMonitor.register(this, getMainLooper(), false);
+ mRegistered = true;
if (alwaysUseOption) {
LayoutInflater inflater = (LayoutInflater) getSystemService(
@@ -118,6 +120,8 @@ public class ResolverActivity extends AlertActivity implements
ap.mAdapter = mAdapter;
} else if (count == 1) {
startActivity(mAdapter.intentForPosition(0));
+ mPackageMonitor.unregister();
+ mRegistered = false;
finish();
return;
} else {
@@ -135,14 +139,20 @@ public class ResolverActivity extends AlertActivity implements
@Override
protected void onRestart() {
super.onRestart();
- mPackageMonitor.register(this, getMainLooper(), false);
+ if (!mRegistered) {
+ mPackageMonitor.register(this, getMainLooper(), false);
+ mRegistered = true;
+ }
mAdapter.handlePackagesChanged();
}
@Override
protected void onStop() {
super.onStop();
- mPackageMonitor.unregister();
+ if (mRegistered) {
+ mPackageMonitor.unregister();
+ mRegistered = false;
+ }
}
public void onClick(DialogInterface dialog, int which) {