进度对话框在android中不显示?
android中何时不显示进度对话框?我想知道发生上述情况的情况: 在本例中,进度对话框未显示在本例中:进度对话框在android中不显示?,android,progressdialog,Android,Progressdialog,android中何时不显示进度对话框?我想知道发生上述情况的情况: 在本例中,进度对话框未显示在本例中: func{ progressdialog.show(); .... ..... anotherfunction(); listview.setAdapter(); progressdialog.dismiss(); } 对话框的一般经验法则是什么 先谢谢你 编辑 执行.show()命令时,应显示进度对话框。但是当调用otherfunct
func{
progressdialog.show();
....
.....
anotherfunction();
listview.setAdapter();
progressdialog.dismiss();
}
对话框的一般经验法则是什么
先谢谢你
编辑
执行.show()命令时,应显示进度对话框。但是当调用otherfunction()时,progressdialog的上一个命令是否显示stop?似乎需要使用UI(包括progressdialog),如果UI线程仍然繁忙,则UI(包括progressdialog)将不会更新。这方面的例子很多 根据经验-如果需要进度对话框,则需要异步任务
这并不是说任何命令都会停止,只是如果您在UI线程上执行一系列方法,则在序列结束之前,UI可能不会更新,这是在
progressDialog.Dismise()之后,因此progressDialog不应再显示。我认为您必须在活动中执行此操作
ProgressDialog _progressDialog = ProgressDialog.show(this,"Saving Data","Please wait......");
settintAdater();
private void settingAdater(){
Thread _thread = new Thread(){
public void run() {
Message _msg = new Message();
_msg.what = 1;
// Do your task where you want to rerieve data to set in adapet
YourCalss.this._handle.sendMessage(_msg);
};
};
_thread.start();
}
Handler _handle = new Handler(){
public void handleMessage(Message msg) {
switch(msg.what){
case 1:
_progressDialog.dismiss();
listview.setAdapter();
}
}
}
要显示进度对话框,请使用
ProgressDialog progressDialog = ProgressDialog.show(PrintMain.this, "",
"Uploading Document. Please wait...", true);
当您完成任务时,请使用
progressDialog.dismiss();
要关闭ProgressDialog
您可以调用以在AsyncTask
类的onPreExecute
方法中显示ProgressDialog,完成后在onPostExecute
方法中取消该对话框哪个线程正在执行该代码?您在日志中收到错误消息了吗?progressdialog是如何创建的?我正在主UI线程中执行它。我没有收到错误消息,只是进度对话框从未出现,它开始执行后的语句。。。并且在没有显示进度对话框的情况下成功完成。但是如果我正在更新UI,比如填充listview,那么?在后台做你能做的事情(比如从DB/web/contacts/等获取数据),只是UI线程中的最后一部分。请阅读AsyncTask文档(请参阅我答案中的链接),我相信您会发现这很有帮助。ui线程什么时候会变得太忙?这是否意味着如果我的UI线程中的功能较少,我可以使用UI线程中的进度对话框?实际发生了什么?如果您在UI线程上执行一系列方法(如示例中所示),则在序列中的所有方法都完成执行之前,UI本身不会更新,如果您在后台线程上运行大部分方法,并且仅在发生更改时轮询UI线程,UI线程将在执行期间更新。因此,一般来说,即使我有少量函数,我也应该使用单独的线程,以便UI线程可以自由显示进度对话框?正确,我以前经常这样做。但我想知道什么时候做这件事?-当我的UI线程中有很多函数时,甚至当有少量函数时?你可以在任何情况下使用Handler,因为你只需要为后台操作创建一个线程和一个处理程序来处理活动中的所有后台操作。在AsynTask中,您必须为每个操作创建单独的类,因此这并不方便。