Android - AsyncTask问题

Par*_*ani 2 android android-asynctask

我需要逐个调用Web服务5次(因为有5个不同的参数).一旦特定呼叫完成,在后台文本视图应该用文本更新为:"1st completed","2nd Completed"等等.

TextView值应在后台更新.

我该怎么办 ?我知道AsyncTask的概念,但我很困惑,我应该写5 AsyncTask然后为每个我写execute()方法来执行AsyncTask?

我只成功打了一个电话,因为我在postExecute()方法中设置了"1st completed".但混淆了5次电话.

请建议我一个更好的方法或确切的解决方案.

mai*_*450 11

你只需要1个AsyncTask,你必须完成所有5个电话doInBackground(),每次你完成一个电话publishProgress传递,例如完成的电话号码,然后,最后做你需要的任何事情onPostExecute.

一个简单的方法:

private class ServiceCallTask extends AsyncTask<String, Integer, Void> {

    protected void onPreExecute() {
        //prepare whatever you need
        myTextField.setText("starting calls");
    }

    protected Void doInBackground(String... params) {
        //process params as you need and make the calls
        doCall1();
        publishProgress(1); //this calls onProgressUpdate(1)
        doCall2();
        publishProgress(2);
        doCall3();
        publishProgress(3);
        doCall4();
        publishProgress(4);
        doCall5();
        publishProgress(5);
        return;
    }

    protected void onProgressUpdate(Integer... progress) {
        //this runs in UI thread so its safe to modify the UI
        myTextField.append("finished call " + progress);
    }

     protected void onPostExecute(Void unused) {
        myTextField.append("all calls finished");
    }
}
Run Code Online (Sandbox Code Playgroud)