如何从 onPreExecute() 方法中取消 ProcessDialog

Posted

技术标签:

【中文标题】如何从 onPreExecute() 方法中取消 ProcessDialog【英文标题】:How to cancel ProcessDialog from onPreExecute() method 【发布时间】:2016-01-18 01:41:43 【问题描述】:

当某些情况发生时,我不知道如何从onPreExecute() 返回。 例如:

@Override
    protected void onPreExecute() 
       if(varCancel)
         //Do not execute doInBackground() method
        
        super.onPreExecute();
    

问题是,我想在方法doInBackground()开始之前取消这个过程。

【问题讨论】:

【参考方案1】:

使用AsyncTask.cancel(boolean mayInterruptIfRunning)取消Task的执行。

   if(varCancel)
     //Do not execute doInBackground() method
       this.cancel(true);
    

或者使用类对象调用execute()启动AsyncTask来取消它:

   if(varCancel)
     //Do not execute doInBackground() method
       <CLASS_OBJECT>.cancel(true);
    

【讨论】:

以上是关于如何从 onPreExecute() 方法中取消 ProcessDialog的主要内容,如果未能解决你的问题,请参考以下文章

Android:取消异步任务

Android:如何将参数传递给 AsyncTask 的 onPreExecute()?

异步任务;调用方法 onPreExecute() 后未调用 doInbackground()

从片段调用 Android AsyncTask 没有调用其成员 - doInbackground、onpreexecute、onpostexecute

android AsyncTask的方法在哪几个线程中调用

AsyncTask onPreExecute() 中未显示进度条