Android 在取消另一个任务后执行异步任务

Android 在取消另一个任务后执行异步任务,android,android-asynctask,Android,Android Asynctask,我有以下问题: 我的程序必须运行两个异步任务(一个接一个,决不能同时运行),其中一个将通过蓝牙进行套接字通信,另一个将通过WIFI进行通信。 所以我所做的是: if (bluetoothConnexion.closeBTConnexion()){ mainContext.startUDPTask(); } public Boolean closeBTConnexion() { if

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

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

public Boolean closeBTConnexion() {
    if (bluetoothServerTask != null){
        bluetoothServerTask.cancel(true);
        return bluetoothServerTask.isCancelled();
    }
    else
        return true;
}
因此,我在蓝牙任务被取消时执行UDPtask,但我面临两个问题:

  • 即使蓝牙任务已正确取消,也不会调用重写的方法onCancelled()
  • 第二个任务从未执行过,它在preExecute方法上运行,但不在doInBackground()上运行
  • 有什么想法吗


    非常感谢

    如果您想串行执行它们,可以尝试使用串行执行器 应该是这样的:

     bluetoothServerTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
    
    然后,您可以使用

    udpTask.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
    

    这样,udpTask将仅在bluetoothServerTask完成时运行。

    感谢您的响应,我尝试了串行执行器,但我的问题一直是无法访问任务的oncancelled()方法。我认为这是因为我正在尝试从BroadcastReceiver onReceive()事件中取消它,有没有理由不从BroadcastReceiver取消异步任务?