doInBackgroundメソッドでJSONArrayを読み取り、カスタムアイテムのArrayList(ArrayList)を返すAsyncTaskを作成しました。この前に、onPostExecuteメソッドで、AsyncTaskでチャージされたArrayListをメインスレッドの別のArrayListに移動しますが、AsyncTaskが終了せず、引き続き機能していると思います。ここに私のコードを置きます:
ここで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