diff options
| author | 2015-06-03 14:06:34 -0400 | |
|---|---|---|
| committer | 2015-06-03 13:13:09 -0700 | |
| commit | ba91fc8ae41693b06f5e69fa480b9fd5ba726c9f (patch) | |
| tree | a4f2db6196be0bd2d5ed59236416d217b5df73fe | |
| parent | 48de126b71c22fb0ce36797ac1c46538395d08c0 (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.java | 34 |
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; } } } |