Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 3c0f30a2 authored by Xiaowen Lei's avatar Xiaowen Lei
Browse files

Add Lifecycle and SavedState support in Launcher ActivityContext.

And call initCompose() in Launcher.java. Therefore there is no behavior
change for BaseActivity, or other ActivityContext subtypes that don't
call initCompose().

This should work for non-activity subtypes of ActivityContext. It's
likely that the Launcher activity will require more complete supoort for
Lifecycle and SavedState.

Note: In order to test the ComposeView, need to build this CL together
with ag/22461463.

1. `ViewTreeLifecycleOwner.set(..., ...);` is necessary to fix the
   following crash:

java.lang.IllegalStateException: ViewTreeLifecycleOwner not found

This error comes from WindowRecomposer.android.kt
  - http://cs/androidx-platform-dev/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/WindowRecomposer.android.kt;l=351-354;rcl=5673af1441ebe04c776f528193dfc5f85c0c9a66

2. `ViewTreeSavedStateRegistryOwner.set(..., ...);` is necessary to fix
   the following crash:

java.lang.IllegalStateException: Composed into the View which doesn't propagateViewTreeSavedStateRegistryOwner!

This error comes from AndroidComposeView.android.kt.
  - http://cs/androidx-platform-dev/compose/ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/AndroidComposeView.android.kt;l=1178-1183;rcl=5673af1441ebe04c776f528193dfc5f85c0c9a66

3. The lifecycle needs to be STARTED. Otherwise the ComposeView doesn't
   show up in its parent (i.e., isn't drawn).
  - In ComponentActivity, `onSaveInstanceState` starts the lifecycle.
  - In ComposeInitializeImpl (from SystemUI),
    ViewLifecycleOwner.updateState() starts the lifecycle when the
    window is visible and in focus.
The implementation in this CL does the same thing as the
ComposeInitializeImpl.

Bug: 275905704
Test: on device, trigger a card such as the timer
Test: RUN_ERROR_PRONE=True m out/soong/.intermediates/packages/apps/Launcher3/Launcher3/android_common/lint/lint-report.xml
Test: RUN_ERROR_PRONE=True m out/soong/.intermediates/vendor/google/gms/packages/SearchLauncher/SearchLauncher/android_common/lint/lint-report.html
Test: Presubmit
Change-Id: Ieced66ad5238916a82ea13c01f69146bbdcf287a
parent bdfb610b
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment