Ich habe diesen Code in Main Thread:Wie kann UI-Thread warten, bis Hintergrund-Thread die Verarbeitung beendet?
// in MyAsyncTask doinBackground und OnPostExecute Füllen Sie meinen second mit Artikel
public class MainActivity extends Activity {
ArrayList<String> secondArray = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ListView lv= (ListView) findViewById(R.id.listView);
final ListView lv2= (ListView) findViewById(R.id.listView2);
AsyncTas o = new AsyncTas();
Toast.makeText(MainActivity.this, secondArray.get(0), Toast.LENGTH_LONG).show();
}
private class AsyncTas extends AsyncTask {
ArrayList<String> firstArray = new ArrayList<String>();
@Override
protected ArrayList<String> doInBackground(Object[] params) {
firstArray.add("item1");
firstArray.add("item2");
firstArray.add("item3");
try {
Thread.sleep(1200);
} catch (InterruptedException e) {
e.printStackTrace();
}
return firstArray;
}
@Override
protected void onPostExecute(ArrayList<String> o) {
secondArray.clear();
secondArray.addAll(o);
}
}
}
Aber ich habe einen von java.lang.IndexOutOfBoundsException verursacht Fehler: ungültige Index 0, Größe ist 0
Meine Frage ist, wie man auflegt oder Hauptfaden warten lässt, bis Hintergrund seine alle Verarbeitung beendet und danke?
fand ich eine Antwort in Waiting till the async task finish its work aber nicht mit mir .. arbeitet aysnctask zuerst, dann in seinen OnPostExecute hinzufügen alle Reaktion in Array dann diese array.get findet (0)
Was ist der Grund für einen Hintergrund-Thread, wenn Sie den Haupt-Thread halten, bis die Verarbeitung im Hintergrund-Thread abgeschlossen ist? – Chebyr
@Chebyr Da ich auf einige Verbindungen warten und einige Stücke von Daten dann es wird in einer anderen AsyncTask – Ahmed