diff options
| author | 2012-04-30 18:29:20 -0700 | |
|---|---|---|
| committer | 2012-04-30 18:29:20 -0700 | |
| commit | 414d50bce61be36dac88a6aaad138f99e2e26513 (patch) | |
| tree | d878500c53912aa5cd9c985b2bd36438122ebb2a | |
| parent | 5703bbfa3d119ee4643983422f9dfeb23b20f446 (diff) | |
| parent | d44713a63d51ba7f186c775c2a32f3c2ce018037 (diff) | |
Merge "Fix issue #6234928: android.app.IntentReceiverLeaked:" into jb-dev
| -rw-r--r-- | core/java/com/android/internal/app/ResolverActivity.java | 14 |
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) { |