Asynctask:onCancelled()在取消后没有被调用(true)

时间:2014-09-11 10:20:42

标签: android android-asynctask

我在使用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);
        }

我希望有人可以提供帮助。提前谢谢!

1 个答案:

答案 0 :(得分:0)

喜欢这个 -

全局声明你的asyncTask。

private YourAsyncTask mTask;

onCreate(){

    mTask = new YourAsyncTask().execute();
}

现在在doInBackground() -

中像这样杀死

mTask.cancel(真);