我在网上搜索过,但我只找到用户想要在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) {
}
}
使用此方法可能是任何错误,例如活动结束时?
谢谢
答案 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
,在后台显示没有对话框的“东西”。
注意:您必须根据应用的生命周期处理任务