Merge "More correct startup and shutdown procedures." into nyc-mr2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
eede3e7f7b
@@ -864,6 +864,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
|
|||||||
|
|
||||||
mAvoidBadWifiTracker = createAvoidBadWifiTracker(
|
mAvoidBadWifiTracker = createAvoidBadWifiTracker(
|
||||||
mContext, mHandler, () -> rematchForAvoidBadWifiUpdate());
|
mContext, mHandler, () -> rematchForAvoidBadWifiUpdate());
|
||||||
|
mAvoidBadWifiTracker.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
private NetworkRequest createInternetRequestForTransport(
|
private NetworkRequest createInternetRequestForTransport(
|
||||||
|
|||||||
@@ -57,7 +57,11 @@ public class AvoidBadWifiTracker {
|
|||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final Handler mHandler;
|
private final Handler mHandler;
|
||||||
private final Runnable mReevaluateRunnable;
|
private final Runnable mReevaluateRunnable;
|
||||||
|
private final Uri mUri;
|
||||||
|
private final ContentResolver mResolver;
|
||||||
private final SettingObserver mSettingObserver;
|
private final SettingObserver mSettingObserver;
|
||||||
|
private final BroadcastReceiver mBroadcastReceiver;
|
||||||
|
|
||||||
private volatile boolean mAvoidBadWifi = true;
|
private volatile boolean mAvoidBadWifi = true;
|
||||||
|
|
||||||
public AvoidBadWifiTracker(Context ctx, Handler handler) {
|
public AvoidBadWifiTracker(Context ctx, Handler handler) {
|
||||||
@@ -68,19 +72,36 @@ public class AvoidBadWifiTracker {
|
|||||||
mContext = ctx;
|
mContext = ctx;
|
||||||
mHandler = handler;
|
mHandler = handler;
|
||||||
mReevaluateRunnable = () -> { if (update() && cb != null) cb.run(); };
|
mReevaluateRunnable = () -> { if (update() && cb != null) cb.run(); };
|
||||||
|
mUri = Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI);
|
||||||
|
mResolver = mContext.getContentResolver();
|
||||||
mSettingObserver = new SettingObserver();
|
mSettingObserver = new SettingObserver();
|
||||||
|
mBroadcastReceiver = new BroadcastReceiver() {
|
||||||
final IntentFilter intentFilter = new IntentFilter();
|
@Override
|
||||||
intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
|
|
||||||
mContext.registerReceiverAsUser(new BroadcastReceiver() {
|
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
reevaluate();
|
reevaluate();
|
||||||
}
|
}
|
||||||
}, UserHandle.ALL, intentFilter, null, null);
|
};
|
||||||
|
|
||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
mResolver.registerContentObserver(mUri, false, mSettingObserver);
|
||||||
|
|
||||||
|
final IntentFilter intentFilter = new IntentFilter();
|
||||||
|
intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
|
||||||
|
mContext.registerReceiverAsUser(
|
||||||
|
mBroadcastReceiver, UserHandle.ALL, intentFilter, null, null);
|
||||||
|
|
||||||
|
reevaluate();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void shutdown() {
|
||||||
|
mResolver.unregisterContentObserver(mSettingObserver);
|
||||||
|
|
||||||
|
mContext.unregisterReceiver(mBroadcastReceiver);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean currentValue() {
|
public boolean currentValue() {
|
||||||
return mAvoidBadWifi;
|
return mAvoidBadWifi;
|
||||||
}
|
}
|
||||||
@@ -100,8 +121,7 @@ public class AvoidBadWifiTracker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getSettingsValue() {
|
public String getSettingsValue() {
|
||||||
final ContentResolver resolver = mContext.getContentResolver();
|
return Settings.Global.getString(mResolver, NETWORK_AVOID_BAD_WIFI);
|
||||||
return Settings.Global.getString(resolver, NETWORK_AVOID_BAD_WIFI);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -117,12 +137,8 @@ public class AvoidBadWifiTracker {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class SettingObserver extends ContentObserver {
|
private class SettingObserver extends ContentObserver {
|
||||||
private final Uri mUri = Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI);
|
|
||||||
|
|
||||||
public SettingObserver() {
|
public SettingObserver() {
|
||||||
super(null);
|
super(null);
|
||||||
final ContentResolver resolver = mContext.getContentResolver();
|
|
||||||
resolver.registerContentObserver(mUri, false, this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user