计算正在运行并显示到progressBar的AsyncTask的数量

问题描述 投票:0回答:2

我有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 android-asynctask
2个回答
0
投票

来自Android文档:

理想情况下,AsyncTasks应该用于短操作(最多几秒钟。)如果需要保持线程长时间运行,强烈建议您使用java.util.concurrent包提供的各种API,例如Executor,ThreadPoolExecutor和FutureTask。

https://developer.android.com/reference/android/os/AsyncTask.html

从您所说的声音来看,AsyncTask不适合这项工作。我建议你看看Volley

如果您坚持使用AsyncTask方法,则可以使用Delegate / Protocol设计模式实现它。然后在活动的回发中,您可以相应地更新进度条。


0
投票

我的一点建议是,拿一个Static int variable并在第一个asyncTask开始增加它并且在result递减它。并且最后在你的variable显示ProgressBar的当前结果。

© www.soinside.com 2019 - 2024. All rights reserved.