From 71d4f39400f20743e01c98f6e1f9a06a0200cfaa Mon Sep 17 00:00:00 2001 From: eguven Date: Thu, 10 Jan 2019 14:46:40 +0000 Subject: [PATCH] Call Listener methods on the thread started RequirementsWatcher PiperOrigin-RevId: 228701917 --- .../scheduler/RequirementsWatcher.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java index 021c10439a..fded95614c 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/scheduler/RequirementsWatcher.java @@ -68,6 +68,7 @@ public final class RequirementsWatcher { private int notMetRequirements; private CapabilityValidatedCallback networkCallback; + private Handler handler; /** * @param context Any context. @@ -87,6 +88,7 @@ public final class RequirementsWatcher { */ public void start() { Assertions.checkNotNull(Looper.myLooper()); + handler = new Handler(); notMetRequirements = requirements.getNotMetRequirements(context); @@ -111,7 +113,7 @@ public final class RequirementsWatcher { } } receiver = new DeviceStatusChangeReceiver(); - context.registerReceiver(receiver, filter, null, new Handler()); + context.registerReceiver(receiver, filter, null, handler); logd(this + " started"); } @@ -195,16 +197,22 @@ public final class RequirementsWatcher { private final class CapabilityValidatedCallback extends ConnectivityManager.NetworkCallback { @Override public void onAvailable(Network network) { - super.onAvailable(network); - logd(RequirementsWatcher.this + " NetworkCallback.onAvailable"); - checkRequirements(); + onNetworkCallback(); } @Override public void onLost(Network network) { - super.onLost(network); - logd(RequirementsWatcher.this + " NetworkCallback.onLost"); - checkRequirements(); + onNetworkCallback(); + } + + private void onNetworkCallback() { + handler.post( + () -> { + if (networkCallback != null) { + logd(RequirementsWatcher.this + " NetworkCallback"); + checkRequirements(); + } + }); } } }