我在使用Androids AsyncTask的onCancelled()方法时遇到了问题。
在asyncTask中我正在打印蓝牙pos打印机上的东西。因此,我需要打开一个端口并通过BT将命令发送到设备。
在doInBackground()方法中,我有几个控制步骤,也可以取消任务,一切正常。 但是当我尝试打开端口时,打开端口时遇到问题,我试着打开端口几次。当这一切都失败时,我取消了任务。但这是它不能正常工作的点(我猜),因为它取消了任务,但没有调用onCancelled()。
这是一些代码。如果您需要更多信息,请告诉我:
for(int i = 0; i < count; i++){
try{
port = StarIOPort.getPort(printer.portName, printer.portSettings,
task.getProperties().getPortTime(), printer);
} catch (StarIOPortException e){
printer.printerServiceListener.onErrorOccured(
new PrintingError(task, Reason.PORT_OPEN_ERROR));
try{Thread.sleep(task.getProperties().getSleepTime());
}catch(InterruptedException ie){System.out.println("PrintTask: Thread slept...");}
}
}
if(port == null && count == 0){
critError = Reason.CONNECTION_FAILURE;
critState = State.IDLE;
cancel(true);
}
if(isCancelled()){
cancel(true);
}
我希望有人可以提供帮助。提前谢谢!
答案 0 :(得分:0)
喜欢这个 -
全局声明你的asyncTask。
private YourAsyncTask mTask;
onCreate(){
mTask = new YourAsyncTask().execute();
}
现在在doInBackground() -
中像这样杀死mTask.cancel(真);