Merge "Fix ANR issue in CallsManager"
am: 258ed877a1
Change-Id: Ie4265e95bed8ab027fb57f8785c069c3a49de5aa
diff --git a/src/com/android/server/telecom/CallsManager.java b/src/com/android/server/telecom/CallsManager.java
index b5ca22f..4df4e3a 100644
--- a/src/com/android/server/telecom/CallsManager.java
+++ b/src/com/android/server/telecom/CallsManager.java
@@ -28,6 +28,7 @@
import android.media.ToneGenerator;
import android.media.MediaPlayer;
import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -48,6 +49,7 @@
import android.telecom.GatewayInfo;
import android.telecom.Log;
import android.telecom.Logging.Runnable;
+import android.telecom.Logging.Session;
import android.telecom.ParcelableConference;
import android.telecom.ParcelableConnection;
import android.telecom.PhoneAccount;
@@ -58,6 +60,7 @@
import android.telephony.PhoneNumberUtils;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import android.util.Pair;
import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.AsyncEmergencyContactNotifier;
@@ -332,15 +335,33 @@
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ Log.startSession("CM.CCCR");
String action = intent.getAction();
if (CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED.equals(action)
|| SystemContract.ACTION_BLOCK_SUPPRESSION_STATE_CHANGED.equals(action)) {
- BlockedNumbersUtil.updateEmergencyCallNotification(context,
- SystemContract.shouldShowEmergencyCallNotification(context));
- }
+ new UpdateEmergencyCallNotificationTask().doInBackground(
+ Pair.create(context, Log.createSubsession()));
+ }
}
};
+ private static class UpdateEmergencyCallNotificationTask
+ extends AsyncTask<Pair<Context, Session>, Void, Void> {
+ @SafeVarargs
+ @Override
+ protected final Void doInBackground(Pair<Context, Session>... args) {
+ if (args == null || args.length != 1 || args[0] == null) {
+ Log.e(this, new IllegalArgumentException(), "Incorrect invocation");
+ return null;
+ }
+ Log.continueSession(args[0].second, "CM.UECNT");
+ Context context = args[0].first;
+ BlockedNumbersUtil.updateEmergencyCallNotification(context,
+ SystemContract.shouldShowEmergencyCallNotification(context));
+ return null;
+ }
+ }
+
/**
* Initializes the required Telecom components.
*/