From 659bc3035013a45115819d62ebcba5b97bfa0516 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Fri, 12 Jun 2026 13:48:18 +0800 Subject: [PATCH 1/2] fix: enable android turn by turn events on background --- .../google/android/react/navsdk/NavModule.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/android/src/main/java/com/google/android/react/navsdk/NavModule.java b/android/src/main/java/com/google/android/react/navsdk/NavModule.java index 073277a8..791a9247 100644 --- a/android/src/main/java/com/google/android/react/navsdk/NavModule.java +++ b/android/src/main/java/com/google/android/react/navsdk/NavModule.java @@ -17,7 +17,6 @@ import android.location.Location; import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.Observer; import com.facebook.react.bridge.Arguments; import com.facebook.react.bridge.LifecycleEventListener; @@ -286,17 +285,15 @@ public void initializeNavigationSession( // Initialize the navigation API initializeNavigationApi(); - // Observe live data for nav info updates. + // Observe nav info independently from the current Activity lifecycle. + // Background turn-by-turn updates continue to arrive in NavInfoReceivingService even when the + // app is paused, so using an Activity-bound LiveData observer drops them while backgrounded. // Remove any existing observer first to prevent duplicates after cleanup+reinit cycles. UiThreadUtil.runOnUiThread( () -> { removeNavInfoObserver(); mNavInfoObserver = this::showNavInfo; - final Activity currentActivity = getReactApplicationContext().getCurrentActivity(); - if (currentActivity != null) { - NavInfoReceivingService.getNavInfoLiveData() - .observe((LifecycleOwner) currentActivity, mNavInfoObserver); - } + NavInfoReceivingService.getNavInfoLiveData().observeForever(mNavInfoObserver); }); } @@ -1093,5 +1090,7 @@ public void onHostResume() { public void onHostPause() {} @Override - public void onHostDestroy() {} + public void onHostDestroy() { + UiThreadUtil.runOnUiThread(this::removeNavInfoObserver); + } } From ab05c37b61c9cd521cebbf8b36d8d88b75ec83df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20V=C3=A4limaa?= Date: Fri, 12 Jun 2026 16:45:39 +0800 Subject: [PATCH 2/2] fix: clean up background nav observer on android init failure --- .../src/main/java/com/google/android/react/navsdk/NavModule.java | 1 + 1 file changed, 1 insertion(+) diff --git a/android/src/main/java/com/google/android/react/navsdk/NavModule.java b/android/src/main/java/com/google/android/react/navsdk/NavModule.java index 791a9247..2bd2ed61 100644 --- a/android/src/main/java/com/google/android/react/navsdk/NavModule.java +++ b/android/src/main/java/com/google/android/react/navsdk/NavModule.java @@ -351,6 +351,7 @@ private void onNavigationInitError(int errorCode) { } pendingInitPromise.reject(errorCodeStr, errorMessage); pendingInitPromise = null; + UiThreadUtil.runOnUiThread(this::removeNavInfoObserver); } }