Android - 暂停for循环,直到AsyncTask成功完成

时间:2015-12-25 12:18:10

标签: android for-loop asynchronous android-asynctask

结果对象包含N个JSON数组值。
for循环在第一个异步任务完成之前运行(启动)第二个数组值。我想执行并移动到下一个数组值,仅当前一个成功完成后,如果没有等待它完成

ApplicationUserID

日志结果仅显示待处理(或)正在运行但不已完成
给我一个不影响用户界面的解决方案 而且,我不想在Asynctask类上使用get()方法。

3 个答案:

答案 0 :(得分:0)

如果您正在使用Asynck任务,请尝试覆盖opPostExecute方法。

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {

         return null;
     }

     protected void onPostExecute(Long result) {
         //This will call after doInBackground finished.
     }
 }

在onPostExecte方法下编写代码

答案 1 :(得分:0)

Async Task已在下面使用

 private class TaskBK extends AsyncTask<URL, Integer, Long> {
     protected Long doInBackground(URL... urls) {

        return null;
    }

    protected void onPostExecute(Long result) {
     //This will call after the doInBackground method get completed.
    }

    @Override
    protected void onPreExecute() {
       super.onPreExecute();
       // This will get executed before doInBackground method get executed
    }
}

答案 2 :(得分:-1)

面临同样的问题。问题是你不能暂停&#39;循环,而不是你可以做什么给循环一个延迟,以给异步任务完成运行的时间。 尝试arounf 3秒的延迟。这是怎么做的:

for (int i = 0; i < results.length(); i++) {
        JSONObject object = results
                .getJSONObject(i);
        FeedDataType item = new FeedDataType(
                object);
        AsyncTasks performBackgroundTask = new AsyncTasks();
        performBackgroundTask.execute(item);
        DBadapter.add(item);
        Log.e("Aynsc Task",performBackgroundTask.getStatus().toString());
        Thread.sleep(3000);
    }

主线程将睡眠延迟三秒钟,允许异步任务完成执行,循环将在延迟后继续。如果您觉得这有用,请提供一个upvote。