@ cricket_007がコメントしたように、ループはAsyncTask
が非同期であるとして待機しませんので、ループはAsyncTask
を待たずに続け終わる。あなたの目的を理解しているので、あなたはこのようなことをする必要があります。
あなたは、このようなインターフェイスを定義する必要があります。
public interface ResponseListener {
void responseReceiver();
}
今、あなたはこのような何かをする必要があなたの活動から今すぐあなたのAsyncTask
このような
public class Server extends AsyncTask<JSONObject, Void, Void> {
public ResponseListener responseListener;
@Override
protected Void doInBackground(JSONObject... params) {
// .........
}
@Override
protected void onPostExecute(Void result) {
// ......... Other code
// Now here's the callback function to the main activity.
responseListener.responseReceiver();
}
}
を変更します。
public class YourActivity extends Activity implements HttpResponseListener {
public int count = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
Server myServer = new Server();
myServer.responseListener = this;
myServer.execute(i);
}
// Callback method implementation
@Override
public void responseReceiver() {
// This is the callback function and it gets called when one AsyncTask finishes.
// Increase the count here and keep track of how many times the AsyncTask has been executed.
// Do something
count++;
// Now call the next AsyncTask again if the count haven't reach 10 already
if(count <= 10) {
Server myServer = new Server();
myServer.responseListener = this;
myServer.execute(i);
}
}
}
希望します。
Asynctaskは非同期です...ループは待機しません –