结果对象包含N个JSON数组值。
for循环在第一个异步任务完成之前运行(启动)第二个数组值。我想执行并移动到下一个数组值,仅当前一个成功完成后,如果没有等待它完成
ApplicationUserID
日志结果仅显示待处理(或)正在运行但不已完成。
给我一个不影响用户界面的解决方案
而且,我不想在Asynctask类上使用get()方法。
答案 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。