Status Update
Comments
ap...@google.com <ap...@google.com> #2
1. Have you saw crash in real device or only in simulators?
2. Do you use dynamic feature for language ID?
ap...@google.com <ap...@google.com> #3
Tested on Android 12 Emulator with custom executor, but cannot repro this issue.
ap...@google.com <ap...@google.com> #4
-
Second crash in the description is from a real device. Experienced it myself on two different Xiaomi phones, plus lots of crashes from users in the Google Play console.
-
Dynamic features are not used in the application.
As a wild guess, I have downgraded build tools from 31.0.0 to 30.0.3, compileSdk from 31 to 30, and moved all work with Language ID to the service in a separate process (just to be sure that crash can kill secondary process instead of main). This combination is in beta for 2 days by now and I don't see any SIGSEGV crashes.
jb...@google.com <jb...@google.com> #5
Hmm, I feel the crash might be something related to separate/secondary process.
I also changed compileSdk and targetSDK to 31 but still cannot repro this issue.
Description
The visibleEntries stateFlow that is currently offered as an experimental API on NavController is populated based on the current lifecycle state of the entry. This means that it considers the hostLifecycleState of the entry when determining whether entries should be part of the list.
Because of this, when the navController is first created, depending on the lifecycle state when you call setGraph, it is possible for the visibleEntries to be empty until after the first navigate call. Also, if the hostLifecycle state is forced down, as in the case of using nested NavHost with different NavControllers in navigation-compose, entries are immediately removed from the list of visible entries although they might still be visible because of animations.
We should visible visible entries so that is always contains any entry that actually should be considered visible.