Skip to content

Commit d44713a

Browse files
author
Dianne Hackborn
committed
Fix issue #6234928: android.app.IntentReceiverLeaked:
Activity com.android.internal.app.ChooserActivity has leaked IntentReceiver Change-Id: I02488931d8c02ecbe0c6fc2f7ce708a9dc406f67
1 parent 3ea8761 commit d44713a

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

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

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class ResolverActivity extends AlertActivity implements
6363
private TextView mClearDefaultHint;
6464
private PackageManager mPm;
6565

66+
private boolean mRegistered;
6667
private final PackageMonitor mPackageMonitor = new PackageMonitor() {
6768
@Override public void onSomePackagesChanged() {
6869
mAdapter.handlePackagesChanged();
@@ -100,6 +101,7 @@ protected void onCreate(Bundle savedInstanceState, Intent intent,
100101
ap.mOnClickListener = this;
101102

102103
mPackageMonitor.register(this, getMainLooper(), false);
104+
mRegistered = true;
103105

104106
if (alwaysUseOption) {
105107
LayoutInflater inflater = (LayoutInflater) getSystemService(
@@ -118,6 +120,8 @@ protected void onCreate(Bundle savedInstanceState, Intent intent,
118120
ap.mAdapter = mAdapter;
119121
} else if (count == 1) {
120122
startActivity(mAdapter.intentForPosition(0));
123+
mPackageMonitor.unregister();
124+
mRegistered = false;
121125
finish();
122126
return;
123127
} else {
@@ -135,14 +139,20 @@ protected void onCreate(Bundle savedInstanceState, Intent intent,
135139
@Override
136140
protected void onRestart() {
137141
super.onRestart();
138-
mPackageMonitor.register(this, getMainLooper(), false);
142+
if (!mRegistered) {
143+
mPackageMonitor.register(this, getMainLooper(), false);
144+
mRegistered = true;
145+
}
139146
mAdapter.handlePackagesChanged();
140147
}
141148

142149
@Override
143150
protected void onStop() {
144151
super.onStop();
145-
mPackageMonitor.unregister();
152+
if (mRegistered) {
153+
mPackageMonitor.unregister();
154+
mRegistered = false;
155+
}
146156
}
147157

148158
public void onClick(DialogInterface dialog, int which) {

0 commit comments

Comments
 (0)