From 9fc75740e1dc154a08e79bc7e6d05190192a1101 Mon Sep 17 00:00:00 2001 From: Jack He Date: Thu, 16 Nov 2017 15:54:14 -0800 Subject: [PATCH] Telephony: Allow custom looper for OnSubscriptionsChangedListener * Add OnSubscriptionsChangedListener(Looper looper) constructor Bug: 69429540 Test: Use this constructor in HeadsetPhoneState.java Change-Id: I37b6c8d970384466527acc8df7a818625865ab16 --- .../telephony/SubscriptionManager.java | 28 +++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java index 0d1764b7a80a6..d2fd0979df228 100644 --- a/telephony/java/android/telephony/SubscriptionManager.java +++ b/telephony/java/android/telephony/SubscriptionManager.java @@ -26,6 +26,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.net.Uri; import android.os.Handler; +import android.os.Looper; import android.os.Message; import android.os.RemoteException; import android.os.ServiceManager; @@ -408,7 +409,15 @@ public class SubscriptionManager { * for #onSubscriptionsChanged to be invoked. */ public static class OnSubscriptionsChangedListener { - private final Handler mHandler = new Handler() { + private class OnSubscriptionsChangedListenerHandler extends Handler { + OnSubscriptionsChangedListenerHandler() { + super(); + } + + OnSubscriptionsChangedListenerHandler(Looper looper) { + super(looper); + } + @Override public void handleMessage(Message msg) { if (DBG) { @@ -416,7 +425,22 @@ public class SubscriptionManager { } OnSubscriptionsChangedListener.this.onSubscriptionsChanged(); } - }; + } + + private final Handler mHandler; + + public OnSubscriptionsChangedListener() { + mHandler = new OnSubscriptionsChangedListenerHandler(); + } + + /** + * Allow a listener to be created with a custom looper + * @param looper the looper that the underlining handler should run on + * @hide + */ + public OnSubscriptionsChangedListener(Looper looper) { + mHandler = new OnSubscriptionsChangedListenerHandler(looper); + } /** * Callback invoked when there is any change to any SubscriptionInfo. Typically