Fix wifi crash

Handle clearing state for resume on the same worker thread as everything
else, this way there can't be concurrent modification.

Bug: 22040227
Change-Id: I9ac78a19fc126c8103f3218e657ca93911d3890d
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index ef08e19..33f993e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -176,10 +176,7 @@
             mScanner = new Scanner();
         }
 
-        mScanResultCache.clear();
-        mSeenBssids.clear();
-        mScanId = 0;
-
+        mWorkHandler.sendEmptyMessage(WorkHandler.MSG_RESUME);
         if (mWifiManager.isWifiEnabled()) {
             mScanner.resume();
         }
@@ -251,6 +248,12 @@
         }
     }
 
+    private void handleResume() {
+        mScanResultCache.clear();
+        mSeenBssids.clear();
+        mScanId = 0;
+    }
+
     private Collection<ScanResult> fetchScanResults() {
         mScanId++;
         final List<ScanResult> newResults = mWifiManager.getScanResults();
@@ -544,6 +547,7 @@
     private final class WorkHandler extends Handler {
         private static final int MSG_UPDATE_ACCESS_POINTS = 0;
         private static final int MSG_UPDATE_NETWORK_INFO = 1;
+        private static final int MSG_RESUME = 2;
 
         public WorkHandler(Looper looper) {
             super(looper);
@@ -558,6 +562,9 @@
                 case MSG_UPDATE_NETWORK_INFO:
                     updateNetworkInfo((NetworkInfo) msg.obj);
                     break;
+                case MSG_RESUME:
+                    handleResume();
+                    break;
             }
         }
     }