Move the blocking API to a backgound thread

Bug: 190376958
Test: Manual testing
Change-Id: Ie0f40bbdb9e312156d362095e692140956b470f6
This commit is contained in:
yinxu
2022-02-16 09:52:32 -08:00
committed by Lucas Dupin
parent 95db721b82
commit 906bfd89da

View File

@@ -30,6 +30,7 @@ import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.net.wifi.WifiNetworkScoreCache;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.provider.Settings;
@@ -53,20 +54,15 @@ public class WifiStatusTracker {
private final WifiManager mWifiManager;
private final NetworkScoreManager mNetworkScoreManager;
private final ConnectivityManager mConnectivityManager;
private final Handler mHandler = new Handler(Looper.getMainLooper());
private final HandlerThread mHandlerThread;
private final Handler mHandler;
private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
private final Set<Integer> mNetworks = new HashSet<>();
// Save the previous HISTORY_SIZE states for logging.
private final String[] mHistory = new String[HISTORY_SIZE];
// Where to copy the next state into.
private int mHistoryIndex;
private final WifiNetworkScoreCache.CacheListener mCacheListener =
new WifiNetworkScoreCache.CacheListener(mHandler) {
@Override
public void networkCacheUpdated(List<ScoredNetwork> updatedNetworks) {
updateStatusLabel();
mCallback.run();
}
};
private final WifiNetworkScoreCache.CacheListener mCacheListener;
private final NetworkRequest mNetworkRequest = new NetworkRequest.Builder()
.clearCapabilities()
.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_VPN)
@@ -113,7 +109,7 @@ public class WifiStatusTracker {
}
updateWifiInfo(wifiInfo);
updateStatusLabel();
mCallback.run();
mMainThreadHandler.post(() -> postResults());
}
@Override
@@ -128,7 +124,7 @@ public class WifiStatusTracker {
mNetworks.remove(network.getNetId());
updateWifiInfo(null);
updateStatusLabel();
mCallback.run();
mMainThreadHandler.post(() -> postResults());
}
}
};
@@ -143,7 +139,7 @@ public class WifiStatusTracker {
mDefaultNetwork = network;
mDefaultNetworkCapabilities = nc;
updateStatusLabel();
mCallback.run();
mMainThreadHandler.post(() -> postResults());
}
@Override
public void onLost(Network network) {
@@ -151,7 +147,7 @@ public class WifiStatusTracker {
mDefaultNetwork = null;
mDefaultNetworkCapabilities = null;
updateStatusLabel();
mCallback.run();
mMainThreadHandler.post(() -> postResults());
}
};
private Network mDefaultNetwork = null;
@@ -180,6 +176,17 @@ public class WifiStatusTracker {
mNetworkScoreManager = networkScoreManager;
mConnectivityManager = connectivityManager;
mCallback = callback;
mHandlerThread = new HandlerThread("WifiStatusTrackerHandler");
mHandlerThread.start();
mHandler = new Handler(mHandlerThread.getLooper());
mCacheListener =
new WifiNetworkScoreCache.CacheListener(mHandler) {
@Override
public void networkCacheUpdated(List<ScoredNetwork> updatedNetworks) {
updateStatusLabel();
mMainThreadHandler.post(() -> postResults());
}
};
}
public void setListening(boolean listening) {
@@ -332,7 +339,7 @@ public class WifiStatusTracker {
/** Refresh the status label on Locale changed. */
public void refreshLocale() {
updateStatusLabel();
mCallback.run();
mMainThreadHandler.post(() -> postResults());
}
private String getValidSsid(WifiInfo info) {
@@ -348,6 +355,10 @@ public class WifiStatusTracker {
mHistoryIndex = (mHistoryIndex + 1) % HISTORY_SIZE;
}
private void postResults() {
mCallback.run();
}
/** Dump function. */
public void dump(PrintWriter pw) {
pw.println(" - WiFi Network History ------");