Merge "Fix window leak and receiver leak. Bug: 2520143 and Bug: 2517390"

This commit is contained in:
Amith Yamasani
2010-03-18 01:24:03 -07:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 11 deletions

View File

@@ -1320,6 +1320,11 @@ public class Activity extends ContextThemeWrapper
}
mManagedCursors.clear();
}
// Close any open search dialog
if (mSearchManager != null) {
mSearchManager.stopSearch();
}
}
/**

View File

@@ -132,6 +132,15 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
// Last known IME options value for the search edit text.
private int mSearchAutoCompleteImeOptions;
private BroadcastReceiver mConfChangeListener = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
onConfigurationChanged();
}
}
};
/**
* Constructor - fires it up and makes it look like the search UI.
*
@@ -149,16 +158,6 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
mVoiceAppSearchIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mVoiceAppSearchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mSearchManager = searchManager;
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_CONFIGURATION_CHANGED)) {
onConfigurationChanged();
}
}
}, filter);
}
/**
@@ -297,10 +296,20 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
show();
}
updateUI();
return true;
}
@Override
public void onStart() {
super.onStart();
// Register a listener for configuration change events.
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
getContext().registerReceiver(mConfChangeListener, filter);
}
/**
* The search dialog is being dismissed, so handle all of the local shutdown operations.
*
@@ -311,6 +320,8 @@ public class SearchDialog extends Dialog implements OnItemClickListener, OnItemS
public void onStop() {
super.onStop();
getContext().unregisterReceiver(mConfChangeListener);
closeSuggestionsAdapter();
// dump extra memory we're hanging on to