如何在while循环中实现AsyncTask

时间:2016-03-19 08:33:28

标签: android

我是Android新手,我遇到线程问题。这就是我想要的:

ArrayList<MODEL_Records> records = SQLITE.getInstance().getRecords();
int length = records.size();
for(int i =0; i < length; i++){
    (new AsynchTask().execute(records.get(i)));
    // wait for the asynchTask to finish executing before iterating
}

我问的是正确的问题吗?有人能指出我走向正确的轨道吗?

1 个答案:

答案 0 :(得分:1)

您不应该在UI线程中执行此操作,因为while循环将阻止代码并强制ANR(App Not Responding?)错误。

除此之外,如果你想在后台线程(AsyncTask)中运行你的任务,你就不应该阻止UI线程去做,这会适得其反。

另外,我不能告诉你的getRecords()方法有什么用,但看起来你不再试图访问数据库,而是访问一个数组,这应该很快。

如果你想改进这一点,而不是将你的asynctask放在while循环中,将while循环放在AsyncTask#doInBackground()中,然后在AsyncTask#onPostExecute()中调用你需要的任何东西。这会将您的慢速处理推送到后台线程。