我有mai Asynctask运行一个taks.in onPostExecute方法我已经执行了另一个运行了近50次的Asynctask。
@Override
protected void onPreExecute() {
progressBar = new ProgressBar(MainActivity.this,null,android.R.attr.progressBarStyleHorizontal);
progressDialog = new AlertDialog.Builder(MainActivity.this,
....
protected void onPostExecute(String result) {
...
for (Get_NIdCadastre_NIdVisitContractCadastre get : a) {
get_List_Visit visit = new get_List_Visit(get.getNIdCadastre(), get.getNIdVisitContractCadastre());
visit.executeOnExecutor((AsyncTask.THREAD_POOL_EXECUTOR), NIdCadastre, NIdVisitContractCadastre);
...
if (progressDialog.isShowing()){
progressDialog.dismiss();
}
现在,在sendProgress的doInBackground方法的get_List_Visit任务中,我希望显示正在运行的任务数或该任务完成其任务:
private class get_List_Visit extends AsyncTask<String, String, String> {
@Override
protected void onProgressUpdate(String... values) {
//?
这意味着每次执行新任务我想表明,执行的任务数量是多少!
我知道AsyncTask.Status.RUNNING
但我怎么能在我的情况下使用它?对不起我的英语不好!!!
我怎样才能做到这一点?
来自Android文档:
理想情况下,AsyncTasks应该用于短操作(最多几秒钟。)如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent包提供的各种API,例如Executor,ThreadPoolExecutor和FutureTask。
https://developer.android.com/reference/android/os/AsyncTask.html
从您所说的声音来看,AsyncTask不适合这项工作。我建议你看看Volley。
如果您坚持使用AsyncTask方法,则可以使用Delegate / Protocol设计模式实现它。然后在活动的回发中,您可以相应地更新进度条。
我的一点建议是,拿一个Static
int variable
并在第一个asyncTask
开始增加它并且在result
递减它。并且最后在你的variable
显示ProgressBar
的当前结果。