diff options
| -rw-r--r-- | services/core/java/com/android/server/connectivity/DataConnectionStats.java | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/connectivity/DataConnectionStats.java b/services/core/java/com/android/server/connectivity/DataConnectionStats.java index 0304cdc47515..15f43a0481bd 100644 --- a/services/core/java/com/android/server/connectivity/DataConnectionStats.java +++ b/services/core/java/com/android/server/connectivity/DataConnectionStats.java @@ -19,12 +19,12 @@ package com.android.server.connectivity; import static android.telephony.AccessNetworkConstants.TRANSPORT_TYPE_WWAN; import static android.telephony.NetworkRegistrationInfo.DOMAIN_PS; +import android.annotation.NonNull; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Handler; -import android.os.Looper; import android.os.RemoteException; import android.telephony.NetworkRegistrationInfo; import android.telephony.PhoneStateListener; @@ -36,6 +36,9 @@ import android.util.Log; import com.android.internal.app.IBatteryStats; import com.android.server.am.BatteryStatsService; +import java.util.concurrent.Executor; +import java.util.concurrent.RejectedExecutionException; + public class DataConnectionStats extends BroadcastReceiver { private static final String TAG = "DataConnectionStats"; private static final boolean DEBUG = false; @@ -55,7 +58,8 @@ public class DataConnectionStats extends BroadcastReceiver { mContext = context; mBatteryStats = BatteryStatsService.getService(); mListenerHandler = listenerHandler; - mPhoneStateListener = new PhoneStateListenerImpl(listenerHandler.getLooper()); + mPhoneStateListener = + new PhoneStateListenerImpl(new PhoneStateListenerExecutor(listenerHandler)); } public void startMonitoring() { @@ -140,9 +144,24 @@ public class DataConnectionStats extends BroadcastReceiver { && mServiceState.getState() != ServiceState.STATE_POWER_OFF; } + private static class PhoneStateListenerExecutor implements Executor { + @NonNull + private final Handler mHandler; + + PhoneStateListenerExecutor(@NonNull Handler handler) { + mHandler = handler; + } + @Override + public void execute(Runnable command) { + if (!mHandler.post(command)) { + throw new RejectedExecutionException(mHandler + " is shutting down"); + } + } + } + private class PhoneStateListenerImpl extends PhoneStateListener { - PhoneStateListenerImpl(Looper looper) { - super(looper); + PhoneStateListenerImpl(Executor executor) { + super(executor); } @Override |