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)
| 归档时间: |
|
| 查看次数: |
3643 次 |
| 最近记录: |