Merge "Run callbacks on ConnectivityService thread" am: 08e1dae42f am: 904ee8f635 am: 11e0de0f30

am: 33d70e8fbd

Change-Id: I8ada7ccf94e0ade83c0d810daba9703da60a6f59
This commit is contained in:
Remi NGUYEN VAN
2019-08-30 04:05:18 -07:00
committed by android-build-merger
2 changed files with 18 additions and 13 deletions

View File

@@ -64,7 +64,7 @@ public class MultinetworkPolicyTracker {
private final Context mContext; private final Context mContext;
private final Handler mHandler; private final Handler mHandler;
private final Runnable mReevaluateRunnable; private final Runnable mAvoidBadWifiCallback;
private final List<Uri> mSettingsUris; private final List<Uri> mSettingsUris;
private final ContentResolver mResolver; private final ContentResolver mResolver;
private final SettingObserver mSettingObserver; private final SettingObserver mSettingObserver;
@@ -81,12 +81,7 @@ public class MultinetworkPolicyTracker {
public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) { public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) {
mContext = ctx; mContext = ctx;
mHandler = handler; mHandler = handler;
mReevaluateRunnable = () -> { mAvoidBadWifiCallback = avoidBadWifiCallback;
if (updateAvoidBadWifi() && avoidBadWifiCallback != null) {
avoidBadWifiCallback.run();
}
updateMeteredMultipathPreference();
};
mSettingsUris = Arrays.asList( mSettingsUris = Arrays.asList(
Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI), Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI),
Settings.Global.getUriFor(NETWORK_METERED_MULTIPATH_PREFERENCE)); Settings.Global.getUriFor(NETWORK_METERED_MULTIPATH_PREFERENCE));
@@ -95,15 +90,15 @@ public class MultinetworkPolicyTracker {
mBroadcastReceiver = new BroadcastReceiver() { mBroadcastReceiver = new BroadcastReceiver() {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
reevaluate(); reevaluateInternal();
} }
}; };
TelephonyManager.from(ctx).listen(new PhoneStateListener() { TelephonyManager.from(ctx).listen(new PhoneStateListener(handler.getLooper()) {
@Override @Override
public void onActiveDataSubscriptionIdChanged(int subId) { public void onActiveDataSubscriptionIdChanged(int subId) {
mActiveSubId = subId; mActiveSubId = subId;
reevaluate(); reevaluateInternal();
} }
}, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
@@ -119,7 +114,7 @@ public class MultinetworkPolicyTracker {
final IntentFilter intentFilter = new IntentFilter(); final IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED);
mContext.registerReceiverAsUser( mContext.registerReceiverAsUser(
mBroadcastReceiver, UserHandle.ALL, intentFilter, null, null); mBroadcastReceiver, UserHandle.ALL, intentFilter, null, mHandler);
reevaluate(); reevaluate();
} }
@@ -164,7 +159,17 @@ public class MultinetworkPolicyTracker {
@VisibleForTesting @VisibleForTesting
public void reevaluate() { public void reevaluate() {
mHandler.post(mReevaluateRunnable); mHandler.post(this::reevaluateInternal);
}
/**
* Reevaluate the settings. Must be called on the handler thread.
*/
private void reevaluateInternal() {
if (updateAvoidBadWifi() && mAvoidBadWifiCallback != null) {
mAvoidBadWifiCallback.run();
}
updateMeteredMultipathPreference();
} }
public boolean updateAvoidBadWifi() { public boolean updateAvoidBadWifi() {

View File

@@ -1102,7 +1102,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
mSettingsObserver = new SettingsObserver(mContext, mHandler); mSettingsObserver = new SettingsObserver(mContext, mHandler);
registerSettingsCallbacks(); registerSettingsCallbacks();
final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext); final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext, mHandler);
dataConnectionStats.startMonitoring(); dataConnectionStats.startMonitoring();
mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler); mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler);