Fixed
Status Update
Comments
su...@google.com <su...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit 16c5a4617aa5d0709ffe27cef015e001b31de79b
Author: George Mount <mount@google.com>
Date: Mon Apr 10 13:31:49 2023
Fix leak from ReportFullyDrawnExecutor
Fixes: 277434271
The runnable was not being removed immediately after the activity
was destroyed. This removes it when it becomes destroyed so that
it can be collected without delay.
Test: new test, exemplar test
Change-Id: Id2ff2311e16d89fc7309a6e99f302cf3e8d9d595
M activity/activity/src/androidTest/java/androidx/activity/ComponentActivityReportFullyDrawnTest.kt
M activity/activity/src/main/java/androidx/activity/ComponentActivity.java
https://android-review.googlesource.com/2530063
Branch: androidx-main
commit 16c5a4617aa5d0709ffe27cef015e001b31de79b
Author: George Mount <mount@google.com>
Date: Mon Apr 10 13:31:49 2023
Fix leak from ReportFullyDrawnExecutor
Fixes: 277434271
The runnable was not being removed immediately after the activity
was destroyed. This removes it when it becomes destroyed so that
it can be collected without delay.
Test: new test, exemplar test
Change-Id: Id2ff2311e16d89fc7309a6e99f302cf3e8d9d595
M activity/activity/src/androidTest/java/androidx/activity/ComponentActivityReportFullyDrawnTest.kt
M activity/activity/src/main/java/androidx/activity/ComponentActivity.java
ap...@google.com <ap...@google.com> #3
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.activity:activity:1.7.1
ra...@google.com <ra...@google.com>
li...@pinterest.com <li...@pinterest.com> #4
Update
su...@google.com <su...@google.com> #5
li...@pinterest.com <li...@pinterest.com> #6
Great! Thanks for the fast response.
cr...@gmail.com <cr...@gmail.com> #7
Wow super fast responce
Description
Version used: 1.0.0-beta05
Devices/Android versions reproduced on: all devices
The context of this ticket is to support initializing WorkManager a bit later after the application cold start in order to keep cold start fast. I am aware that:
1. WorkManager has this auto-initialization support through the WorkManagerInitializer provider.
2. It can be disabled and replaced by a custom provider to call WorkManager.initialize() directly or call it from Application.onCreate().
3. A number of services and receivers are registered by WorkManager and they rely on the early initialization of the WorkManager.
During testing, I realized the WorkManager.initialize() spends non-trivial time, it could be 50ms on some low end devices. So I want to avoid that delay during the cold start and have an option to initialize WorkManager a bit later. The request is to add code into the receivers and services to initialize WorkManager by themselves if WorkManager has not been initialized. This will help to cover the time from the application startup to the time that the application initialize the WorkManager manually.
Currently, a crash will happen in those receivers and services if they are triggered before the WorkManager is initialized in the application.
03-04 22:35:15.552 5784-5784/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.pinterest, PID: 5784
java.lang.RuntimeException: Unable to create service androidx.work.impl.background.systemjob.SystemJobService: java.lang.IllegalStateException: WorkManager needs to be initialized via a ContentProvider#onCreate() or an Application#onCreate().
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3172)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1550)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
Caused by: java.lang.IllegalStateException: WorkManager needs to be initialized via a ContentProvider#onCreate() or an Application#onCreate().
at androidx.work.impl.background.systemjob.SystemJobService.onCreate(SystemJobService.java:68)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3162)
at android.app.ActivityThread.-wrap5(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1550)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6077)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)