私は、IBM WorkManager (v8.0.0)と協力して、メインスレッドと非同期の仕事をしています。私は、次のコードを使用します。このため 例外を指定してWorkEventを完了したときにmainthreadに通知する方法は?
は:// wm = via resource injected WorkManager
WorkItem item = wm.startWork(work, WorkManager.INDEFINITE, new WorkListener() {
@Override
public void workStarted(WorkEvent arg0) {
}
@Override
public void workRejected(WorkEvent arg0) {
}
@Override
public void workCompleted(WorkEvent arg0) {
WorkException exception = arg0.getException();
if (null != exception) {
throw new RuntimeException("WorkCompleted with Exception");
}
}
@Override
public void workAccepted(WorkEvent arg0) {
}
});
これは、例外なく、非常に細かな限りWorkEvent
が完成した作品。しかし、例外を除いて完了したときに、私はメインスレッドに通知して、より多くのWorkItemをWorkManager
に提出しないようにしたいと思っています。
私はmainthreadを通知するRunetimeException
を上げることができると思ったが、私は例外がmainthreadsがWorkManager
にすべてWorkItems
を提出し、WorkManager
のjoin
-methodを呼び出して終了し、その瞬間にスローされることが判明したログを分析 - これはあまりにも遅い(ほとんどの場合、WorkManager
によって50,000アイテムが処理されなければならない)。
workCompleted
に例外が認識された今、私はこの瞬間に多くのアイテムをWorkManager
に提出するのを止めるために私のメインスレッドを中断できますか?
最終的にうまくいったのはうれしい! – GhostCat