summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jason Monk <jmonk@google.com> 2015-06-03 14:06:34 -0400
committer The Android Automerger <android-build@google.com> 2015-06-03 13:13:09 -0700
commitba91fc8ae41693b06f5e69fa480b9fd5ba726c9f (patch)
treea4f2db6196be0bd2d5ed59236416d217b5df73fe
parent48de126b71c22fb0ce36797ac1c46538395d08c0 (diff)
SettingsLib/Wifi: Run pause/resumes on main thread
To avoid our objects from disappearing out from under us. Bug: 21581533 Change-Id: Ia6fc9e56271f79c7d8b0f86f9c35351c39c35d29
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java34
1 files changed, 22 insertions, 12 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index cf3b7c873d59..09c93e9820d4 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -357,19 +357,17 @@ public class WifiTracker {
}
private void updateNetworkInfo(NetworkInfo networkInfo) {
- if (mScanner != null) {
- /* sticky broadcasts can call this when wifi is disabled */
- if (!mWifiManager.isWifiEnabled()) {
- mScanner.pause();
- return;
- }
+ /* sticky broadcasts can call this when wifi is disabled */
+ if (!mWifiManager.isWifiEnabled()) {
+ mMainHandler.sendEmptyMessage(MainHandler.MSG_PAUSE_SCANNING);
+ return;
+ }
- if (networkInfo != null &&
- networkInfo.getDetailedState() == DetailedState.OBTAINING_IPADDR) {
- mScanner.pause();
- } else {
- mScanner.resume();
- }
+ if (networkInfo != null &&
+ networkInfo.getDetailedState() == DetailedState.OBTAINING_IPADDR) {
+ mMainHandler.sendEmptyMessage(MainHandler.MSG_PAUSE_SCANNING);
+ } else {
+ mMainHandler.sendEmptyMessage(MainHandler.MSG_RESUME_SCANNING);
}
mLastInfo = mWifiManager.getConnectionInfo();
@@ -448,6 +446,8 @@ public class WifiTracker {
private static final int MSG_CONNECTED_CHANGED = 0;
private static final int MSG_WIFI_STATE_CHANGED = 1;
private static final int MSG_ACCESS_POINT_CHANGED = 2;
+ private static final int MSG_RESUME_SCANNING = 3;
+ private static final int MSG_PAUSE_SCANNING = 4;
public MainHandler(Looper looper) {
super(looper);
@@ -468,6 +468,16 @@ public class WifiTracker {
case MSG_ACCESS_POINT_CHANGED:
mListener.onAccessPointsChanged();
break;
+ case MSG_RESUME_SCANNING:
+ if (mScanner != null) {
+ mScanner.resume();
+ }
+ break;
+ case MSG_PAUSE_SCANNING:
+ if (mScanner != null) {
+ mScanner.pause();
+ }
+ break;
}
}
}