我创建了一个 AsyncTask,它在 doInBackground 方法中读取 JSONArray 并返回自定义项 (ArrayList) 的 ArrayList。在此之前,在 onPostExecute 方法中,我将 AsyncTask 中的 ArrayList 移动到主线程的另一个 ArrayList,但我认为我的 AsyncTask 永远不会结束并且仍在工作。在这里我把我的代码:
这里是异步任务:
private class ReadJSONTask extends AsyncTask<Void, Void, ArrayList<Item>>{
@Override
protected ArrayList<Item> doInBackground(Void... params) {
// TODO Auto-generated method stub
ArrayList<Item> auxList = new ArrayList<Item>();
LoadData(auxList); //Method that reads JSON and load information in the ArrayList
return auxList; // Return ArrayList
}
@Override
protected void onPostExecute(ArrayList<Item> result) {
// TODO Auto-generated method stub
Log.i("OnPostExecute", String.valueOf(result.size())); //The size of the array
listMain = result; // Move the data of the AsyncTask to the main Thread
Log.i("OnPostExecute", String.valueOf(listaComic.size())); //The size of the ArrayList I use in the Main Thread
}
}
这里调用主线程中的 AsyncTask:
if (isOnline()){ //Return true if there is internet connection
ReadJSONTask task = new ReadJSONTask();
task.execute();
Log.i("Main Thread - listMain Size", String.valueOf(listMain.size())); //Never executed
//This for loop its only for debug purposes, never executed
for (Item item : listMain){
Log.i("Items", item.toString());
}
}
在日志中,我看到 onPostExecute() 方法中的所有日志都已打印,但主线程中没有任何内容。
我不知道要修复它的错误在哪里,我已经研究了 2 天并在论坛中搜索,在 StackOverflow 中,我无法修复它:S