在我的一个 android 项目中,我使用 jamod 库进行 Modbus 通信,它工作正常。除非网络连接不可用,否则我的异步任务将停留transaction.execute
几秒钟。我想在给定的超时后取消它。我试图为此实现一个处理程序来取消异步任务:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (task.getStatus() == AsyncTask.Status.RUNNING
|| task.getStatus() == AsyncTask.Status.PENDING) {
task.cancel(true);
}
}
}, WRITE_TASK_TIMOUT);
但这种方法行不通。我查看了库,发现该ModbusTCPTransaction.execute()
方法使用synchronized()
.
这是否意味着我没有机会在 x 秒后取消此方法?