@@ -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