Merge "Fix issue #6234928: android.app.IntentReceiverLeaked:" into jb-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
414d50bce6
@@ -63,6 +63,7 @@ public class ResolverActivity extends AlertActivity implements
|
|||||||
private TextView mClearDefaultHint;
|
private TextView mClearDefaultHint;
|
||||||
private PackageManager mPm;
|
private PackageManager mPm;
|
||||||
|
|
||||||
|
private boolean mRegistered;
|
||||||
private final PackageMonitor mPackageMonitor = new PackageMonitor() {
|
private final PackageMonitor mPackageMonitor = new PackageMonitor() {
|
||||||
@Override public void onSomePackagesChanged() {
|
@Override public void onSomePackagesChanged() {
|
||||||
mAdapter.handlePackagesChanged();
|
mAdapter.handlePackagesChanged();
|
||||||
@@ -100,6 +101,7 @@ public class ResolverActivity extends AlertActivity implements
|
|||||||
ap.mOnClickListener = this;
|
ap.mOnClickListener = this;
|
||||||
|
|
||||||
mPackageMonitor.register(this, getMainLooper(), false);
|
mPackageMonitor.register(this, getMainLooper(), false);
|
||||||
|
mRegistered = true;
|
||||||
|
|
||||||
if (alwaysUseOption) {
|
if (alwaysUseOption) {
|
||||||
LayoutInflater inflater = (LayoutInflater) getSystemService(
|
LayoutInflater inflater = (LayoutInflater) getSystemService(
|
||||||
@@ -118,6 +120,8 @@ public class ResolverActivity extends AlertActivity implements
|
|||||||
ap.mAdapter = mAdapter;
|
ap.mAdapter = mAdapter;
|
||||||
} else if (count == 1) {
|
} else if (count == 1) {
|
||||||
startActivity(mAdapter.intentForPosition(0));
|
startActivity(mAdapter.intentForPosition(0));
|
||||||
|
mPackageMonitor.unregister();
|
||||||
|
mRegistered = false;
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
@@ -135,14 +139,20 @@ public class ResolverActivity extends AlertActivity implements
|
|||||||
@Override
|
@Override
|
||||||
protected void onRestart() {
|
protected void onRestart() {
|
||||||
super.onRestart();
|
super.onRestart();
|
||||||
mPackageMonitor.register(this, getMainLooper(), false);
|
if (!mRegistered) {
|
||||||
|
mPackageMonitor.register(this, getMainLooper(), false);
|
||||||
|
mRegistered = true;
|
||||||
|
}
|
||||||
mAdapter.handlePackagesChanged();
|
mAdapter.handlePackagesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onStop() {
|
protected void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
mPackageMonitor.unregister();
|
if (mRegistered) {
|
||||||
|
mPackageMonitor.unregister();
|
||||||
|
mRegistered = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onClick(DialogInterface dialog, int which) {
|
public void onClick(DialogInterface dialog, int which) {
|
||||||
|
|||||||
Reference in New Issue
Block a user