diff options
author | Jack Wang <jack.wang@sonyericsson.com> | 2011-01-27 14:25:22 +0800 |
---|---|---|
committer | Kenneth Andersson <kenneth.andersson@sonyericsson.com> | 2012-08-13 15:25:04 +0200 |
commit | 481582f4ecf0d1c3c58551b11b667630cfdf032b (patch) | |
tree | f4fec62d6959a13b85d37146bd0d8119e9a31cc0 | |
parent | 5d72b2726797374e402943182d8132045ed32d3a (diff) | |
download | packages_apps_Settings-481582f4ecf0d1c3c58551b11b667630cfdf032b.zip packages_apps_Settings-481582f4ecf0d1c3c58551b11b667630cfdf032b.tar.gz packages_apps_Settings-481582f4ecf0d1c3c58551b11b667630cfdf032b.tar.bz2 |
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
-rw-r--r-- | src/com/android/settings/ApnSettings.java | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/src/com/android/settings/ApnSettings.java b/src/com/android/settings/ApnSettings.java index 8ea2063..56ee7a9 100644 --- a/src/com/android/settings/ApnSettings.java +++ b/src/com/android/settings/ApnSettings.java @@ -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 |