在onProgressUpdate中启动AsyncTask

时间:2016-06-07 20:02:46

标签: android android-asynctask

我班级的结构如下:

class Task1 extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        // ...
        publishProgress();
        // ...
    }

    @Override
    protected void onProgressUpdate(Void... params) {
        // ...
        Task2 t2 = new Task2();
        t2.execute();
    }

    private class Task2 extends AsyncTask<Void, Void, Void> {
        // ...
    }
}

我面临的问题是Task2没有被执行。 Logcat也没有显示任何错误。

我尝试在新线程中执行Task2,但即使这样也行不通。有人可以指出我正确的方向吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

<{3}}文档中的“线程规则”说明必须在UI线程上创建Task实例。另外,必须根据规则在UI线程上加载AsyncTask。我相信这可能是你的Task2没有被执行的原因。

答案 1 :(得分:0)

您放入doInBackground的任何函数都是在后台线程上完成的,因此使用另一个AsyncTask可能是多余的,而且过于复杂。您应该从Task2中取出代码并将其放入可以在Task1的doInBackground中调用的普通函数中。