Status Update
Comments
ke...@google.com <ke...@google.com> #2
I have read that WorkManager 2.7.0 is needed if an app targets API 31/Android 12, and in order to do that, I have added setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
to my OneTimeWorkRequestBuilder
and added the necessary changes in the AndroidManifest as well. Now running my app I've encountered the following error:
java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: java.lang.IllegalStateException: Expedited WorkRequests require a ListenableWorker to provide an implementation for `getForegroundInfoAsync()`
So I tried looking up info on how to do implement this, and found no examples available from official Google sources (Github, developers.android.com, changelog, etc), but found this
My question is how do you implement the said getForegroundInfoAsync
for RxWorker
when getForegroundInfoAsync
has to return ListenableFuture<ForegroundInfo
>--reading the docs it seems I have to add Guava to my app to do this? Since the docs for ListenableFuture says to Avoid implementing ListenableFuture from scratch. If you can't get by with the standard implementations, prefer to derive a new Future instance with the methods in Futures or, if necessary, to extend AbstractFuture
.
se...@google.com <se...@google.com> #3
I also have tried adding a SettableFuture
but it is annotated with @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
se...@google.com <se...@google.com> #4
Nvm, I just annotated my implementation of getForegroundInfoAsync
with @SuppressLint("RestrictedApi")
and created a SettableFuture
. It seems to work well.
cl...@google.com <cl...@google.com> #5
You're right, we should add Rx support for this method.
In meanwhile, you can use SettableFuture
and allows you avoid dependency on restricted APIs.
pr...@simformsolutions.com <pr...@simformsolutions.com> #6
Thanks for showing that callback. Honestly this whole getForegroundInfoAsync
is still unclear to me--since I'm using RxWorker, I usually create a notification inside createWork
and when the work is ongoing, I display a notification with progress bar via doOnSubscribe
, something like this:
api.doSomeWork()
.doOnSubscribe {
// display notification with progress bar
setForegroundAsync(ForegroundInfo(notificationId, notificationBuilder.build()))
}
So how getForegroundInfoAsync
fits into this, I don't understand. The effect of implementing getForegroundInfoAsync
is that I actually get two notifications, the one that displays a progress bar that's already full, and another one that's actually updated.
Edit: actually never mind, getForegroundInfoAsync
has nothing to do with having two notifs. Just figured it out and getForegroundInfoAsync
is called before createWork
.
ap...@google.com <ap...@google.com> #7
Branch: androidx-main
commit 4d0b5f22951dd44cd4c4ba646fe5ad7a3e87c280
Author: Sergey Vasilinets <sergeyv@google.com>
Date: Fri Nov 05 17:00:43 2021
RxJava2: RxJava wrapper around getForegroundInfoAsync
Test: RxForegroundInfoTest
bug:203851459
Relnote: "
RxWorker has now `getForegroundInfo` returing`Single` that
can be used instead of `getForegroundInfoAsync` that returns
`ListenableFuture`.
"
Change-Id: I21c91cd5db57e85bf1aaa7e1596e2287ab44675c
M work/work-rxjava2/src/main/java/androidx/work/RxWorker.java
M work/work-rxjava2/build.gradle
M work/work-rxjava2/api/public_plus_experimental_current.txt
M work/work-rxjava2/api/current.txt
M work/work-rxjava2/api/restricted_current.txt
M work/work-rxjava2/src/test/java/androidx/work/RxForegroundInfoTest.kt
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit 66303e797f590d88fd50d1c68caee02c1bfac077
Author: Sergey Vasilinets <sergeyv@google.com>
Date: Fri Nov 05 17:43:16 2021
RxJava3: RxJava wrapper around setForegroundInfoAsync
Test: RxForegroundInfoTest
bug:203851459
Relnote: "
RxWorker now has `setForeground` returning `Completable` that
can be used instead of `setForegroundInfoAsync` that returns
`ListenableFuture`.
"
Change-Id: I992a32849600b8c3bb37fa362e9775bc46a6462b
M work/work-rxjava3/src/main/java/androidx/work/rxjava3/RxWorker.java
M work/work-rxjava3/src/test/java/androidx/work/rxjava3/RxForegroundInfoTest.kt
M work/work-rxjava3/api/public_plus_experimental_current.txt
M work/work-rxjava3/api/current.txt
M work/work-rxjava3/api/restricted_current.txt
cl...@google.com <cl...@google.com> #9
cl...@google.com <cl...@google.com> #10
Passing to Jose regarding release
re...@gmail.com <re...@gmail.com> #11
Any update on the release date please?
ka...@gmail.com <ka...@gmail.com> #12
I ma still waiting for the release. I have tried the SNAPSHOT version but that also requires androidCompileSdkVersion = 35, which is inconvenient with all the edge-to-edge changes. Is it possible to have the release and not require androidCompileSdkVersion 35?
ma...@finshape.com <ma...@finshape.com> #13
But Material3 still missing this feature:
se...@google.com <se...@google.com>
m....@gmail.com <m....@gmail.com> #14
ni...@gmail.com <ni...@gmail.com> #15
Any updates? Will M3 be able to access NavGraphBuilder.bottomSheet on the next stable release? Regular material has this planned according to:
jo...@google.com <jo...@google.com>
jo...@google.com <jo...@google.com> #16
Type-safe support for the material-navigation artifact was shipped in 1.8.0-alpha01, so we will be marking this issue as fixed.
#14: Can you please create a new issue with a repro case? Thank you!
#15: At the current time, M3 support for material-navigation is not prioritized. M3 sheets are implemented through dialogs and are shown on top of other layouts regardless of the composable's position in the hierarchy. If you are looking to have sheet destinations on the back stack, we recommend implementing a custom Navigator
. Please create a new issue asking for M3 support if this is an important use case for you.
mt...@gmail.com <mt...@gmail.com> #17
And it's mentioned in this bug with linked PR, which I think can be cherry-picked.
For others: as a workaround we are using this 3rd party library without any known issues for us:
ni...@gmail.com <ni...@gmail.com> #18
#16: There is already a long standing issue:
Description
Compose started to support type-safe navigation but the functionality is missing for the bottom sheet. The navigation team said that the issue should be filed with the material team. See ticket: https://issuetracker.google.com/issues/188693139