我和工作经理阿尔法05一起工作。
我正在开发一个服务,可以根据其他应用程序的需要将任务排队。
它有两种方法:
create task(创建一个新任务,给定一个名称和一组数据,它返回和id)
checktaskstatus(应用程序询问给定id的服务,任务的状态)
通信是通过使用消息的绑定服务完成的。这意味着客户端和服务都有正确的实现来传递信息。
方法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上。
最佳答案
似乎SynchronousWorkManager在10月11日被删除:
删除了workmanager.synchronous()和workcontinuation.synchronous()以及所有相关方法。添加listenablefuture作为api中许多方法的返回类型。这是一个突破性的api更改。
如何使用ListenableFuture:
现在可以使用listenablefutures同步获取和观察。例如,workmanager.enqueue()用于返回void;它现在返回listenablefuture。操作完成后,可以调用listenablefuture.addListener(runnable,executor)或listenablefuture.get()来运行代码。
更多信息可以找到here。