Move the blocking API to a backgound thread
Bug: 190376958 Test: Manual testing Change-Id: Ie0f40bbdb9e312156d362095e692140956b470f6
This commit is contained in:
@@ -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 ------");
|
||||
|
||||
Reference in New Issue
Block a user