Loading core/java/android/net/util/MultinetworkPolicyTracker.java +17 −12 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public class MultinetworkPolicyTracker { private final Context mContext; private final Handler mHandler; private final Runnable mReevaluateRunnable; private final Runnable mAvoidBadWifiCallback; private final List<Uri> mSettingsUris; private final ContentResolver mResolver; private final SettingObserver mSettingObserver; Loading @@ -81,12 +81,7 @@ public class MultinetworkPolicyTracker { public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) { mContext = ctx; mHandler = handler; mReevaluateRunnable = () -> { if (updateAvoidBadWifi() && avoidBadWifiCallback != null) { avoidBadWifiCallback.run(); } updateMeteredMultipathPreference(); }; mAvoidBadWifiCallback = avoidBadWifiCallback; mSettingsUris = Arrays.asList( Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI), Settings.Global.getUriFor(NETWORK_METERED_MULTIPATH_PREFERENCE)); Loading @@ -95,15 +90,15 @@ public class MultinetworkPolicyTracker { mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { reevaluate(); reevaluateInternal(); } }; TelephonyManager.from(ctx).listen(new PhoneStateListener() { TelephonyManager.from(ctx).listen(new PhoneStateListener(handler.getLooper()) { @Override public void onActiveDataSubscriptionIdChanged(int subId) { mActiveSubId = subId; reevaluate(); reevaluateInternal(); } }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); Loading @@ -119,7 +114,7 @@ public class MultinetworkPolicyTracker { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); mContext.registerReceiverAsUser( mBroadcastReceiver, UserHandle.ALL, intentFilter, null, null); mBroadcastReceiver, UserHandle.ALL, intentFilter, null, mHandler); reevaluate(); } Loading Loading @@ -164,7 +159,17 @@ public class MultinetworkPolicyTracker { @VisibleForTesting 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() { Loading services/core/java/com/android/server/ConnectivityService.java +1 −1 Original line number Diff line number Diff line Loading @@ -1102,7 +1102,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mSettingsObserver = new SettingsObserver(mContext, mHandler); registerSettingsCallbacks(); final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext); final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext, mHandler); dataConnectionStats.startMonitoring(); mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler); Loading services/core/java/com/android/server/connectivity/DataConnectionStats.java +13 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.os.Handler; import android.os.Looper; import android.os.RemoteException; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; Loading @@ -39,15 +41,19 @@ public class DataConnectionStats extends BroadcastReceiver { private final Context mContext; private final IBatteryStats mBatteryStats; private final Handler mListenerHandler; private final PhoneStateListener mPhoneStateListener; private IccCardConstants.State mSimState = IccCardConstants.State.READY; private SignalStrength mSignalStrength; private ServiceState mServiceState; private int mDataState = TelephonyManager.DATA_DISCONNECTED; public DataConnectionStats(Context context) { public DataConnectionStats(Context context, Handler listenerHandler) { mContext = context; mBatteryStats = BatteryStatsService.getService(); mListenerHandler = listenerHandler; mPhoneStateListener = new PhoneStateListenerImpl(listenerHandler.getLooper()); } public void startMonitoring() { Loading @@ -63,7 +69,7 @@ public class DataConnectionStats extends BroadcastReceiver { filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(ConnectivityManager.INET_CONDITION_ACTION); mContext.registerReceiver(this, filter); mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler); } @Override Loading Loading @@ -129,7 +135,11 @@ public class DataConnectionStats extends BroadcastReceiver { && mServiceState.getState() != ServiceState.STATE_POWER_OFF; } private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { private class PhoneStateListenerImpl extends PhoneStateListener { PhoneStateListenerImpl(Looper looper) { super(looper); } @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { mSignalStrength = signalStrength; Loading Loading
core/java/android/net/util/MultinetworkPolicyTracker.java +17 −12 Original line number Diff line number Diff line Loading @@ -64,7 +64,7 @@ public class MultinetworkPolicyTracker { private final Context mContext; private final Handler mHandler; private final Runnable mReevaluateRunnable; private final Runnable mAvoidBadWifiCallback; private final List<Uri> mSettingsUris; private final ContentResolver mResolver; private final SettingObserver mSettingObserver; Loading @@ -81,12 +81,7 @@ public class MultinetworkPolicyTracker { public MultinetworkPolicyTracker(Context ctx, Handler handler, Runnable avoidBadWifiCallback) { mContext = ctx; mHandler = handler; mReevaluateRunnable = () -> { if (updateAvoidBadWifi() && avoidBadWifiCallback != null) { avoidBadWifiCallback.run(); } updateMeteredMultipathPreference(); }; mAvoidBadWifiCallback = avoidBadWifiCallback; mSettingsUris = Arrays.asList( Settings.Global.getUriFor(NETWORK_AVOID_BAD_WIFI), Settings.Global.getUriFor(NETWORK_METERED_MULTIPATH_PREFERENCE)); Loading @@ -95,15 +90,15 @@ public class MultinetworkPolicyTracker { mBroadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { reevaluate(); reevaluateInternal(); } }; TelephonyManager.from(ctx).listen(new PhoneStateListener() { TelephonyManager.from(ctx).listen(new PhoneStateListener(handler.getLooper()) { @Override public void onActiveDataSubscriptionIdChanged(int subId) { mActiveSubId = subId; reevaluate(); reevaluateInternal(); } }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE); Loading @@ -119,7 +114,7 @@ public class MultinetworkPolicyTracker { final IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction(Intent.ACTION_CONFIGURATION_CHANGED); mContext.registerReceiverAsUser( mBroadcastReceiver, UserHandle.ALL, intentFilter, null, null); mBroadcastReceiver, UserHandle.ALL, intentFilter, null, mHandler); reevaluate(); } Loading Loading @@ -164,7 +159,17 @@ public class MultinetworkPolicyTracker { @VisibleForTesting 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() { Loading
services/core/java/com/android/server/ConnectivityService.java +1 −1 Original line number Diff line number Diff line Loading @@ -1102,7 +1102,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mSettingsObserver = new SettingsObserver(mContext, mHandler); registerSettingsCallbacks(); final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext); final DataConnectionStats dataConnectionStats = new DataConnectionStats(mContext, mHandler); dataConnectionStats.startMonitoring(); mKeepaliveTracker = new KeepaliveTracker(mContext, mHandler); Loading
services/core/java/com/android/server/connectivity/DataConnectionStats.java +13 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,8 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.net.ConnectivityManager; import android.os.Handler; import android.os.Looper; import android.os.RemoteException; import android.telephony.PhoneStateListener; import android.telephony.ServiceState; Loading @@ -39,15 +41,19 @@ public class DataConnectionStats extends BroadcastReceiver { private final Context mContext; private final IBatteryStats mBatteryStats; private final Handler mListenerHandler; private final PhoneStateListener mPhoneStateListener; private IccCardConstants.State mSimState = IccCardConstants.State.READY; private SignalStrength mSignalStrength; private ServiceState mServiceState; private int mDataState = TelephonyManager.DATA_DISCONNECTED; public DataConnectionStats(Context context) { public DataConnectionStats(Context context, Handler listenerHandler) { mContext = context; mBatteryStats = BatteryStatsService.getService(); mListenerHandler = listenerHandler; mPhoneStateListener = new PhoneStateListenerImpl(listenerHandler.getLooper()); } public void startMonitoring() { Loading @@ -63,7 +69,7 @@ public class DataConnectionStats extends BroadcastReceiver { filter.addAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); filter.addAction(ConnectivityManager.INET_CONDITION_ACTION); mContext.registerReceiver(this, filter); mContext.registerReceiver(this, filter, null /* broadcastPermission */, mListenerHandler); } @Override Loading Loading @@ -129,7 +135,11 @@ public class DataConnectionStats extends BroadcastReceiver { && mServiceState.getState() != ServiceState.STATE_POWER_OFF; } private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() { private class PhoneStateListenerImpl extends PhoneStateListener { PhoneStateListenerImpl(Looper looper) { super(looper); } @Override public void onSignalStrengthsChanged(SignalStrength signalStrength) { mSignalStrength = signalStrength; Loading