Fix memory leak in ApnSettings-activity

When destroying the activity, the HandlerThread isnt stopped. This
results in that the thread remains, and if you enter/exit the
activity multiple times, you will end up with multiple threads and
a small memory leak

Change-Id: I4779d2625e6002b55066dd034c84d743b9f80ef5
This commit is contained in:
Jack Wang
2011-01-27 14:25:22 +08:00
committed by Kenneth Andersson
parent 5d72b27267
commit 481582f4ec

View File

@@ -81,6 +81,7 @@ public class ApnSettings extends PreferenceActivity implements
private RestoreApnUiHandler mRestoreApnUiHandler;
private RestoreApnProcessHandler mRestoreApnProcessHandler;
private HandlerThread mRestoreDefaultApnThread;
private String mSelectedKey;
@@ -141,10 +142,19 @@ public class ApnSettings extends PreferenceActivity implements
@Override
protected void onPause() {
super.onPause();
unregisterReceiver(mMobileStateReceiver);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mRestoreDefaultApnThread != null) {
mRestoreDefaultApnThread.quit();
}
}
private void fillList() {
String where = "numeric=\""
+ android.os.SystemProperties.get(TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, "")
@@ -273,12 +283,13 @@ public class ApnSettings extends PreferenceActivity implements
mRestoreApnUiHandler = new RestoreApnUiHandler();
}
if (mRestoreApnProcessHandler == null) {
HandlerThread restoreDefaultApnThread = new HandlerThread(
if (mRestoreApnProcessHandler == null ||
mRestoreDefaultApnThread == null) {
mRestoreDefaultApnThread = new HandlerThread(
"Restore default APN Handler: Process Thread");
restoreDefaultApnThread.start();
mRestoreDefaultApnThread.start();
mRestoreApnProcessHandler = new RestoreApnProcessHandler(
restoreDefaultApnThread.getLooper(), mRestoreApnUiHandler);
mRestoreDefaultApnThread.getLooper(), mRestoreApnUiHandler);
}
mRestoreApnProcessHandler