我设法显示了ProgressDialog,但在长时间运行后我无法关闭它。 有谁知道这里有什么问题。
所有方法都直接在我的活动的onCreate()下。
这是我的代码片段。
private final Handler updateHandler = new Handler() {
public void handleMessage(final Message msg) {
dismissWaitDialog();
};
public void showWaitDialog(String sTitle, String sMessage){
waitDialog=new ProgressDialog(this);
waitDialog.show(this, sTitle, sMessage);
}
public void dismissWaitDialog(){
waitDialog.dismiss();
}
public void longrunner(){
showWaitDialog("Please wait","Please wait");
new Thread() {
public void run() {
do something long
updateHandler .sendMessage(mymessageinit);
}
}.start();
}
答案 0 :(得分:2)
使用asyncTask。
在doinbackground();
在preexecute();
doinbackground();
后,取消进度对话框
答案 1 :(得分:2)
您正在使用静态show()
方法返回您丢弃的ProgressDialog
实例。您关闭的对话框与显示的对话框不同。要修复,请更改:
waitDialog=new ProgressDialog(this);
waitDialog.show(this, sTitle, sMessage);
到
waitDialog = ProgressDialog.show(this, sTitle, sMessage);
正如其他人所说,AsyncTask
实际上是执行此类操作的规范方式,而不是直接使用Thread
。