From 784f266cbd0b5934bec8229cf8dbe87180afdda2 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Mon, 21 Apr 2014 10:57:07 -0700 Subject: [PATCH] Better decoupling of Index updates in WiFi Settings - use a Handler Change-Id: I1e35f2e437021001900468d0df2b75e53b8c62f6 --- .../android/settings/wifi/WifiEnabler.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java index 9f141ffd7df..7adf806384c 100644 --- a/src/com/android/settings/wifi/WifiEnabler.java +++ b/src/com/android/settings/wifi/WifiEnabler.java @@ -24,6 +24,8 @@ import android.net.NetworkInfo; import android.net.wifi.SupplicantState; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.os.Handler; +import android.os.Message; import android.provider.Settings; import android.widget.CompoundButton; import android.widget.Switch; @@ -64,6 +66,22 @@ public class WifiEnabler implements CompoundButton.OnCheckedChangeListener { } }; + private static final String EVENT_DATA_IS_WIFI_ON = "is_wifi_on"; + private static final int EVENT_UPDATE_INDEX = 0; + + private Handler mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + switch (msg.what) { + case EVENT_UPDATE_INDEX: + final boolean isWiFiOn = msg.getData().getBoolean(EVENT_DATA_IS_WIFI_ON); + Index.getInstance(mContext).updateFromClassNameResource( + WifiSettings.class.getName(), false, isWiFiOn); + break; + } + } + }; + public WifiEnabler(Context context, Switch switch_) { mContext = context; mSwitch = switch_; @@ -154,8 +172,12 @@ public class WifiEnabler implements CompoundButton.OnCheckedChangeListener { } private void updateSearchIndex(boolean isWiFiOn) { - Index.getInstance(mContext).updateFromClassNameResource( - WifiSettings.class.getName(), false, isWiFiOn); + mHandler.removeMessages(EVENT_UPDATE_INDEX); + + Message msg = new Message(); + msg.what = EVENT_UPDATE_INDEX; + msg.getData().putBoolean(EVENT_DATA_IS_WIFI_ON, isWiFiOn); + mHandler.sendMessage(msg); } private void setSwitchChecked(boolean checked) {