From 7cd00a66238b86faa9055db03df45436969e37ae Mon Sep 17 00:00:00 2001 From: Robin Lee Date: Wed, 27 Jul 2016 18:48:18 +0100 Subject: [PATCH] Run VPN refresh on a HandlerThread Bug: 28315317 Change-Id: I1aa4748b9454db5abf866b3ea71a9c46cceca82d --- src/com/android/settings/vpn2/VpnSettings.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/vpn2/VpnSettings.java b/src/com/android/settings/vpn2/VpnSettings.java index a675779bf99..afffc97f1ed 100644 --- a/src/com/android/settings/vpn2/VpnSettings.java +++ b/src/com/android/settings/vpn2/VpnSettings.java @@ -31,6 +31,7 @@ import android.net.NetworkCapabilities; import android.net.NetworkRequest; import android.os.Bundle; import android.os.Handler; +import android.os.HandlerThread; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; @@ -95,6 +96,7 @@ public class VpnSettings extends RestrictedSettingsFragment implements private Map mLegacyVpnPreferences = new ArrayMap<>(); private Map mAppPreferences = new ArrayMap<>(); + private HandlerThread mUpdaterThread; private Handler mUpdater; private LegacyVpnInfo mConnectedLegacyVpn; @@ -180,7 +182,9 @@ public class VpnSettings extends RestrictedSettingsFragment implements // Trigger a refresh if (mUpdater == null) { - mUpdater = new Handler(this); + mUpdaterThread = new HandlerThread("Refresh VPN list in background"); + mUpdaterThread.start(); + mUpdater = new Handler(mUpdaterThread.getLooper(), this); } mUpdater.sendEmptyMessage(RESCAN_MESSAGE); } @@ -197,12 +201,15 @@ public class VpnSettings extends RestrictedSettingsFragment implements if (mUpdater != null) { mUpdater.removeCallbacksAndMessages(null); + mUpdater = null; + mUpdaterThread.quit(); + mUpdaterThread = null; } super.onPause(); } - @Override + @Override @WorkerThread public boolean handleMessage(Message message) { mUpdater.removeMessages(RESCAN_MESSAGE);