Android:Asynctask没有显示对话框

时间:2013-10-03 10:42:51

标签: android dialog android-asynctask

我在网上搜索过,但我只找到用户想要在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时出现了一些问题,其中包含有关Window Leaked Error的对话框。我尝试过的事情不是在Pre和Post Actions中添加任何对话框,如下例所示。

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


                    @Override
                    protected void onPreExecute() {

                    }


protected void onPostExecute(String file_url) {

                    }
                }

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

谢谢

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

    protected Long doInBackground(String... urls) { 
        //add here your background work
    }

}

这是一个非常简化且完全分叉的AsyncTask,在后台显示没有对话框的“东西”。

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