Call Listener methods on the thread started RequirementsWatcher

PiperOrigin-RevId: 228701917
This commit is contained in:
eguven 2019-01-10 14:46:40 +00:00 committed by Oliver Woodman
parent 92bec21c03
commit 71d4f39400

View File

@ -68,6 +68,7 @@ public final class RequirementsWatcher {
private int notMetRequirements; private int notMetRequirements;
private CapabilityValidatedCallback networkCallback; private CapabilityValidatedCallback networkCallback;
private Handler handler;
/** /**
* @param context Any context. * @param context Any context.
@ -87,6 +88,7 @@ public final class RequirementsWatcher {
*/ */
public void start() { public void start() {
Assertions.checkNotNull(Looper.myLooper()); Assertions.checkNotNull(Looper.myLooper());
handler = new Handler();
notMetRequirements = requirements.getNotMetRequirements(context); notMetRequirements = requirements.getNotMetRequirements(context);
@ -111,7 +113,7 @@ public final class RequirementsWatcher {
} }
} }
receiver = new DeviceStatusChangeReceiver(); receiver = new DeviceStatusChangeReceiver();
context.registerReceiver(receiver, filter, null, new Handler()); context.registerReceiver(receiver, filter, null, handler);
logd(this + " started"); logd(this + " started");
} }
@ -195,16 +197,22 @@ public final class RequirementsWatcher {
private final class CapabilityValidatedCallback extends ConnectivityManager.NetworkCallback { private final class CapabilityValidatedCallback extends ConnectivityManager.NetworkCallback {
@Override @Override
public void onAvailable(Network network) { public void onAvailable(Network network) {
super.onAvailable(network); onNetworkCallback();
logd(RequirementsWatcher.this + " NetworkCallback.onAvailable");
checkRequirements();
} }
@Override @Override
public void onLost(Network network) { public void onLost(Network network) {
super.onLost(network); onNetworkCallback();
logd(RequirementsWatcher.this + " NetworkCallback.onLost"); }
private void onNetworkCallback() {
handler.post(
() -> {
if (networkCallback != null) {
logd(RequirementsWatcher.this + " NetworkCallback");
checkRequirements(); checkRequirements();
} }
});
}
} }
} }