WorkManager Alpha05を使用しています。
他のアプリケーションの要求に応じてタスクをキューに入れるサービスを開発しています。
2つの方法があります。
通信は、メッセージを使用してバインドされたサービスを介して行われます。つまり、クライアントとサービスの両方に、情報を伝達するための正しい実装があります。
方法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()および関連するすべてのメソッドを削除しました。APIの多くのメソッドの戻り値の型としてListenableFutureを追加しました。これはAPIの重大な変更です。
ListenableFutureの使用方法:
ListenableFuturesを使用して、同期的に取得および監視できるようになりました。たとえば、voidを返すために使用されるWorkManager.enqueue()。これで、ListenableFutureが返されます。操作が完了したら、ListenableFuture.addListener(Runnable、Executor)またはListenableFuture.get()を呼び出してコードを実行できます。
詳細については、こちらをご覧ください。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加