From 8b4326a8e360372e5499cb4f22036a3638c8a2dd Mon Sep 17 00:00:00 2001 From: litclimbing <94636143+litclimbing@users.noreply.github.com> Date: Thu, 3 Feb 2022 16:56:43 -0700 Subject: [PATCH] android: fix for app coming to foreground When an app goes to the background, onBlockedStatusChanged is called with true and then called with false when it comes back to the foreground. The function onAvailable isn't called in this case and the connection wasn't being reset. Closes #8850 I noticed the comment that this is used for API versions 24+ but onBlockedStatusChanged was added in 29. I'm not sure if some kind of guard needs to be added or not. https://developer.android.com/reference/android/net/ConnectivityManager.NetworkCallback#onBlockedStatusChanged(android.net.Network,%20boolean) --- .../src/main/java/io/grpc/android/AndroidChannelBuilder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/android/src/main/java/io/grpc/android/AndroidChannelBuilder.java b/android/src/main/java/io/grpc/android/AndroidChannelBuilder.java index 8c69ca68b5f..3353572fa15 100644 --- a/android/src/main/java/io/grpc/android/AndroidChannelBuilder.java +++ b/android/src/main/java/io/grpc/android/AndroidChannelBuilder.java @@ -293,6 +293,11 @@ private class DefaultNetworkCallback extends ConnectivityManager.NetworkCallback public void onAvailable(Network network) { delegate.enterIdle(); } + @Override + public void onBlockedStatusChanged (Network network, boolean blocked) { + if (!blocked) + delegate.enterIdle(); + } } /** Respond to network changes. Only used on API levels < 24. */