我发现很多人都有类似的问题,但我只是想在显示一个对话框时,我从URL中抓取一些数据,然后在检索数据后正确解除。这是我正在尝试做的事情(这是我的onClick()方法的刷新按钮):
dialog.show();
// do some work
dialog.dismiss();
这样做你从来没有真正看过对话框。我尝试过使用额外的线程,例如:
Thread t = new Thread() {
public void run() {
dialog.show();
}
};
但是这样我得到一个错误并且一个力量关闭...... 这样做的最佳方法是什么?
答案 0 :(得分:0)
对于这类任务,我建议您使用AsyncTask。 Here是帮助您的一个很好的例子。
对于这个问题,因为您正在制作与UI相关的任务,请使用UI线程。
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
//Show or Hide your ProgressDialog
}
});
答案 1 :(得分:0)
对于您尝试实施的任务:
dialog.show();
// do some work
dialog.dismiss();
现在,要实现上述功能,有 AsyncTask 的概念,这是实现线程任务的最佳方式,因为它也被称为 Android中的无痛线程
AsyncTask有4种主要方法:
onPreExecute()
- 您可以在此处显示ProgressDialog或ProgressBar。doInBackground()
- 您可以在这里执行/实施后台任务onProgressUpdate()
- 您可以在此处根据从webservice调用或后台任务收到的中间结果更新UI onPostExecute()
- 您可以在此处关闭对话框或使进度条不可见。此外,您可以在收到后台任务或Web服务调用的结果后执行要执行的任务。答案 2 :(得分:0)
尝试使用Activity的runOnUiThread而不是使用Thread。 请检查以下代码段。 runOnUiThread(new Runnable(){
public void run() {
dialog = new ProgressDialog(ctContext);
dialog.show();
}
}
});
我认为这会对你有帮助。