Fix automatic Wi-fi toggle
It is happening because there previous view doesn't disconnect itself from setting change; and then two views alternatively enable/disable wifi. Bug: 17157005 Change-Id: I42916a7bbd735960a26efbae670c9b927ec8574d
This commit is contained in:
@@ -40,6 +40,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
|||||||
public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
|
public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
private SwitchBar mSwitchBar;
|
private SwitchBar mSwitchBar;
|
||||||
|
private boolean mListeningToOnSwitchChange = false;
|
||||||
private AtomicBoolean mConnected = new AtomicBoolean(false);
|
private AtomicBoolean mConnected = new AtomicBoolean(false);
|
||||||
|
|
||||||
private final WifiManager mWifiManager;
|
private final WifiManager mWifiManager;
|
||||||
@@ -99,23 +100,41 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
|
|||||||
public void setupSwitchBar() {
|
public void setupSwitchBar() {
|
||||||
final int state = mWifiManager.getWifiState();
|
final int state = mWifiManager.getWifiState();
|
||||||
handleWifiStateChanged(state);
|
handleWifiStateChanged(state);
|
||||||
|
if (!mListeningToOnSwitchChange) {
|
||||||
mSwitchBar.addOnSwitchChangeListener(this);
|
mSwitchBar.addOnSwitchChangeListener(this);
|
||||||
|
mListeningToOnSwitchChange = true;
|
||||||
|
}
|
||||||
mSwitchBar.show();
|
mSwitchBar.show();
|
||||||
|
|
||||||
|
mContext.registerReceiver(mReceiver, mIntentFilter);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void teardownSwitchBar() {
|
public void teardownSwitchBar() {
|
||||||
|
if (mListeningToOnSwitchChange) {
|
||||||
mSwitchBar.removeOnSwitchChangeListener(this);
|
mSwitchBar.removeOnSwitchChangeListener(this);
|
||||||
|
mListeningToOnSwitchChange = false;
|
||||||
|
}
|
||||||
mSwitchBar.hide();
|
mSwitchBar.hide();
|
||||||
|
|
||||||
|
mContext.unregisterReceiver(mReceiver);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void resume(Context context) {
|
public void resume(Context context) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
// Wi-Fi state is sticky, so just let the receiver update UI
|
// Wi-Fi state is sticky, so just let the receiver update UI
|
||||||
mContext.registerReceiver(mReceiver, mIntentFilter);
|
mContext.registerReceiver(mReceiver, mIntentFilter);
|
||||||
|
if (!mListeningToOnSwitchChange) {
|
||||||
|
mSwitchBar.addOnSwitchChangeListener(this);
|
||||||
|
mListeningToOnSwitchChange = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pause() {
|
public void pause() {
|
||||||
mContext.unregisterReceiver(mReceiver);
|
mContext.unregisterReceiver(mReceiver);
|
||||||
|
if (mListeningToOnSwitchChange) {
|
||||||
|
mSwitchBar.removeOnSwitchChangeListener(this);
|
||||||
|
mListeningToOnSwitchChange = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleWifiStateChanged(int state) {
|
private void handleWifiStateChanged(int state) {
|
||||||
|
Reference in New Issue
Block a user