取消另一个后,AsyncTask

时间:2015-04-09 16:00:24

标签: android android-asynctask

我有以下问题: 我的程序必须运行两个AsyncTask(一个接一个,从不同时),其中一个将通过蓝牙进行套接字通信,另一个将通过WIFI进行。 所以我做的是:

 if (bluetoothConnexion.closeBTConnexion()){
                            mainContext.startUDPTask();
                        }

public Boolean closeBTConnexion() {
    if (bluetoothServerTask != null){
        bluetoothServerTask.cancel(true);
        return bluetoothServerTask.isCancelled();
    }
    else
        return true;
}

所以当蓝牙一个被取消时我执行UDP任务,但我遇到两个问题:

  1. 即使正确取消蓝牙任务,也永远不会调用重写的onCancelled()方法
  2. 第二个任务永远不会执行,它在preExecute方法上运行但不在doInBackground()上运行
  3. 有什么想法吗?

    非常感谢!

1 个答案:

答案 0 :(得分:1)

如果您想连续执行它们,可以尝试使用串行执行程序http://developer.android.com/reference/android/os/AsyncTask.html#SERIAL_EXECUTOR 它会是这样的:

 bluetoothServerTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);

然后您可以使用

执行其他任务
udpTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);

这样udpTask只会在bluetoothServerTask完成时运行。