I need to have a callback upon Work completion from WorkManager (android.arch.work:work-runtime-ktx:1.0.0-alpha11). Yet the listener I\'m adding is called immediately after work
Until a proper solution is found for this (w/o GCed errors etc), a rudimentary approach could be to create another WorkRequest and chain it as the last work request to handle the state.
Ofcourse, you would have to handle the error states separately (And always return Result.success for each WorkRequest) to allow propagation through the chain.
This is by no means a sustainable approach, but rather a quick fix if necessary
The problem is not observed if you get the result with liveData like this, instead of using ListenableFuture
WorkManager.getInstance()
.getWorkInfoByIdLiveData(cloudSyncOneTimeWork.id)
.observe(yourLifecycle, yourObserver)
If you don't want to tie it to a lifecycleowner you can call it like this :
WorkManager.getInstance()
.getWorkInfoByIdLiveData(cloudSyncOneTimeWork.id)
.observeForever(yourObserver)
If you do so you are responsible to unregister the listener when you want