我正在與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
完成無異常。但是當它完成時有一個異常,我想通知主線程停止向WorkManager
提交更多的WorkItems。
我以爲我可以提出一個RunetimeException
通知mainthread,但分析日誌我發現異常在那一刻mainthreads完成提交所有WorkItems
到WorkManager
拋出調用WorkManager
的join
- 方法 - 這太晚了(在大多數情況下,需要通過WorkManager
來完成50.000項)。
那麼,如何在workCompleted
中識別異常時立即中斷我的主線程以停止向WorkManager
提交更多項目?
很高興它結束了! – GhostCat