我正在使用WorkManager Alpha 05。
我正在开发一种服务,该服务可以按其他应用程序的要求排队任务。
它有两种方法:
通过绑定服务使用消息进行通信。这意味着客户端和服务都具有正确的实现方式来传达信息。
方法1运行正常。
方法2出现问题。
WorkManager.getInstance().getStatusById(taskID)
.observe(LifecycleOwner, Observer {
status -> if (status !=null){
val myResult = status.state.toString()
statusString = myResult
Log.d("Task Status",myResult)
}
})
观察者正在正确记录状态,但是我无法将该消息发送回客户端。有没有办法以同步方式检查状态?
我真的不需要将任务附加到LiveData。
答案 0 :(得分:1)
似乎已在10月11日删除了 SynchronousWorkManager :
删除了WorkManager.synchronous()和WorkContinuation.synchronous()以及所有相关方法。在API中添加了ListenableFuture作为许多方法的返回类型。这是一个重大的API更改。
如何使用ListenableFuture:
您现在可以使用ListenableFutures同步获取和观察。例如,WorkManager.enqueue()用于返回void;现在它返回一个ListenableFuture。操作完成后,您可以调用ListenableFuture.addListener(Runnable,Executor)或ListenableFuture.get()来运行代码。
更多信息here。
答案 1 :(得分:0)
WorkManager实例具有一个synchronous方法,该方法返回SynchronousWorkManager,这将为您提供一组用于执行同步操作的方法。考虑到这是要在后台线程中使用的。