首页 文章

Android:Asynctask没有显示对话框

提问于
浏览
1

我在网上搜索过,但我只找到用户想要在asynctask中显示对话框的情况,如下例所示:protected void onPreExecute() .

{
                            super.onPreExecute();
                            pDialog = new ProgressDialog(NumericoComercial.this);
                            pDialog.setMessage("Actualizando ...");
                            pDialog.setIndeterminate(false);
                            pDialog.setCancelable(true);
                            pDialog.show();
                        }

我想知道的是,如果可以在没有在onPreExecute()和onPostExecute()中显示任何对话框的情况下执行asynctask,就像通常那样 .

我使用asynctask和窗口泄漏错误的对话框遇到了一些问题 . 我尝试过的事情不是在Pre和Post Actions中添加任何对话框,如下例所示 .

class UpdateCandidatos extends AsyncTask<String, String, String> {


                    @Override
                    protected void onPreExecute() {

                    }


protected void onPostExecute(String file_url) {

                    }
                }

可能是使用此方法的任何错误,例如活动结束时?

谢谢

2 回答

  • 1

    onPreExecute()onPostExecute() 不是扩展 Aynctask 的必需方法,那么您在这些方法中编写的所有内容(Dialog,ProgressDialog等)对于您的类的正确工作是不必要的 .

    class UpdateCandidatos extends AsyncTask<String, String, String> {
    
        protected Long doInBackground(String... urls) { 
            //add here your background work
        }
    
    }
    

    这是一个非常简化且完全分叉的 AsyncTask ,在后台显示没有对话框的"something" .

    注意:您必须根据应用的生命周期处理任务

  • 1

    我建议您在onPause()方法中取消异步任务 . 这样,如果您的活动关闭,异步任务将不会尝试发布任何数据,并且不会调用onPostExecute .

    嗯,你不应该在onPostExecute()上有任何错误,你可以使用异步任务而不显示任何数据,它不是强制性的 . 你甚至不需要@override那个函数,只要把Void我声明(...扩展AsyncTask <...,...,Void>)

相关问题