计算正在运行并显示为progressBar

时间:2017-12-16 07:47:39

标签: android android-asynctask

我有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();
}

现在,通过 publishProgress doInBackground 方法的get_List_Visit任务中,我希望显示正在运行的任务数或该任务已完成其任务:

private class get_List_Visit extends AsyncTask<String, String, String> {

 @Override
    protected void onProgressUpdate(String... values) {
    //?

这意味着每次执行新任务时我想表明,执行的任务数量是多少!!!

我知道AsyncTask.Status.RUNNING但我怎么能在我的情况下使用它? 抱歉我的英文!!!

我该怎么做?

2 个答案:

答案 0 :(得分:0)

来自Android文档:

  

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

     

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

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

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

答案 1 :(得分:0)

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