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