diff options
| author | Remi NGUYEN VAN <reminv@google.com> | 2019-08-30 04:17:08 -0700 |
|---|---|---|
| committer | android-build-merger <android-build-merger@google.com> | 2019-08-30 04:17:08 -0700 |
| commit | be354592f0fe5bcbf4da3dc36c771a8ecb6b0b28 (patch) | |
| tree | 3169d534d136e0fc09c3d2f85fa41031bd26b0dd /core/java | |
| parent | e54b5c9725d549dbfce28108aec5697aee06b929 (diff) | |
| parent | 99ad4a5368fec3c96408fb06c552ef2aa155f382 (diff) | |
Merge "Run callbacks on ConnectivityService thread" am: bef5d2165d am: 5af10311a3 am: 6f757cc4a1 am: 5020c0b69e
am: 99ad4a5368
Change-Id: I382db90c318495244a42a2d4af6e5ebf54f05750
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/net/util/MultinetworkPolicyTracker.java | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/core/java/android/net/util/MultinetworkPolicyTracker.java b/core/java/android/net/util/MultinetworkPolicyTracker.java index f7e494d830ac..4e88149b8095 100644 --- a/core/java/android/net/util/MultinetworkPolicyTracker.java +++ b/core/java/android/net/util/MultinetworkPolicyTracker.java @@ -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; @@ -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)); @@ -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); @@ -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(); } @@ -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() { |
