Run VPN refresh on a HandlerThread

Bug: 28315317
Change-Id: I1aa4748b9454db5abf866b3ea71a9c46cceca82d
This commit is contained in:
Robin Lee
2016-07-27 18:48:18 +01:00
parent 0dc7a13a5e
commit 7cd00a6623

View File

@@ -31,6 +31,7 @@ import android.net.NetworkCapabilities;
import android.net.NetworkRequest; import android.net.NetworkRequest;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.HandlerThread;
import android.os.Message; import android.os.Message;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
@@ -95,6 +96,7 @@ public class VpnSettings extends RestrictedSettingsFragment implements
private Map<String, LegacyVpnPreference> mLegacyVpnPreferences = new ArrayMap<>(); private Map<String, LegacyVpnPreference> mLegacyVpnPreferences = new ArrayMap<>();
private Map<AppVpnInfo, AppPreference> mAppPreferences = new ArrayMap<>(); private Map<AppVpnInfo, AppPreference> mAppPreferences = new ArrayMap<>();
private HandlerThread mUpdaterThread;
private Handler mUpdater; private Handler mUpdater;
private LegacyVpnInfo mConnectedLegacyVpn; private LegacyVpnInfo mConnectedLegacyVpn;
@@ -180,7 +182,9 @@ public class VpnSettings extends RestrictedSettingsFragment implements
// Trigger a refresh // Trigger a refresh
if (mUpdater == null) { 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); mUpdater.sendEmptyMessage(RESCAN_MESSAGE);
} }
@@ -197,12 +201,15 @@ public class VpnSettings extends RestrictedSettingsFragment implements
if (mUpdater != null) { if (mUpdater != null) {
mUpdater.removeCallbacksAndMessages(null); mUpdater.removeCallbacksAndMessages(null);
mUpdater = null;
mUpdaterThread.quit();
mUpdaterThread = null;
} }
super.onPause(); super.onPause();
} }
@Override @Override @WorkerThread
public boolean handleMessage(Message message) { public boolean handleMessage(Message message) {
mUpdater.removeMessages(RESCAN_MESSAGE); mUpdater.removeMessages(RESCAN_MESSAGE);