Java/Android - AsyncTask 执行,尝试运行同步任务,未经检查的调用 "execute(params)"

标签 java android android-asynctask

我正在尝试同步运行两个 AsyncTask。

AsyncTask task1 = new AsyncTask<Void, Void, String>() {
//First task here
};

AsyncTask task2 = new AsyncTask<Void, Void, String>() {
//Second task here
};

为了强调任务完美运行,我尝试以相同的方式将它们直接放置在 onCreate 函数中:

AsyncTask task1 = new AsyncTask<Void, Void, String>() {
//First task here
}.execute();

AsyncTask task2 = new AsyncTask<Void, Void, String>() {
//Second task here
}.execute();

但问题是这些任务是一起开始的,而不是一个接一个地开始。所以我尝试将它们放在 onCreate 函数之外,然后根据此方法调用它们,以便同步工作:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

task1.execute();
    if(task1.getStatus() == AsyncTask.Status.FINISHED){
        task2.execute();
    }

}

这里我从 Android Studio 收到一个错误:“未检查调用‘execute(Params...)’作为原始类型‘android.os.AsyncTask’的成员”。

怎么了?我如何解决它?或者同步这两个任务的另一种方法是什么?

最佳答案

为什么不在第一个 AsyncTask 的 onPostExecute 方法中启动第二个 AsyncTask?

未经检查的调用可能是由于类型检查造成的。将您的声明更改为:

AsyncTask<Void, Void, String> task1 = ...;
AsyncTask<Void, Void, String> task2 = ...;

关于Java/Android - AsyncTask 执行,尝试运行同步任务,未经检查的调用 "execute(params)",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31688514/

相关文章:

java - Android:OpenGL-ES 游戏图像 (HUD)

android - 安卓上的zxing项目

java - 如何避免在jsp中重新加载js和css

java - 将java控制台输出复制到Excel中,行而不是列

java - 在java 8中将拖动的组件添加到JPanel

从任务管理器中终止时,Android GCM 未收到消息

android - 错误异步任务 doInBackground() & JSoup

java - 如何在返回语句之前从 FirebaseFirestore 获取所有数据

java - 使用 AsyncTask.get() 和 onPostExecute() 的区别

java - .NET AES 加密和 Android 解密