[英]ProgressDialog in AsyncTask dismiss not working
我有一个带有服务类的android应用程序,可以与RestWebService通信。 服务类的方法使用AsyncTasks。 我想在执行AsyncTask的过程中显示一个ProgressDialog。 因此,我有一个私人领域
public final class UserService extends Service {
private static final String LOG_TAG = UserService.class.getSimpleName();
private static UserService instance = null;
private ProgressDialog progressDialog;
public static UserService getInstance() {
if (instance == null) {
instance = new UserService();
}
return instance;
}
...
}
它在showProgressDialog(Context ctx)方法中实例化:
private ProgressDialog showProgressDialog(Context ctx) {
progressDialog = new ProgressDialog(ctx);
progressDialog.setProgressStyle(STYLE_SPINNER);
progressDialog.setCancelable(true);
progressDialog.show();
return progressDialog;
}
我在AsyncTask的onPreExecute上调用此方法:
@Override
protected void onPreExecute() {
progressDialog = showProgressDialog(ctx);
}
并尝试在onPostExecute中将其关闭:
@Override
protected void onPostExecute(HttpResponse<User> unused) {
Log.v(LOG_TAG, "onPostExecute");
progressDialog.dismiss();
}
我看到执行了onPostExecute方法,因为使用了Log命令,但是我的ProgressDialog没有关闭。
我究竟做错了什么?
预先非常感谢您的回答!
如果asynctask是外部类,请确保在preExecute中执行progressdialog.show()之前,已在构造函数中初始化了progressdialog对象。
您没有 正确 显示 ProgressDialog
。
显示后,请致电:
private ProgressDialog dialog;
// store the reference, "this" is the Context
dialog = ProgressDialog.show(this, "title...", "message...");
隐藏后, 使用存储的引用 :
dialog.dismiss();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.