在以下代码中:
Log.v("dialog", "dialogshow");
ProgressDialog dialog = ProgressDialog.show(UBActivity.this, "", "Loading calendar, please wait...", true);
boolean res;
try {
res = new Utils().new DownloadCalendarTask().execute().get();
} catch (InterruptedException e) {
Log.v("downloadcalendar", "interruptedexecution : " + e.getLocalizedMessage());
res = false;
} catch (ExecutionException e) {
Log.v("downloadcalendar", "executionexception : " + e.getLocalizedMessage());
res = false;
}
Log.v("dialog", "dialogdismiss");
dialog.dismiss();
根据logcat,在logshow和dialogdismiss之间有8秒的差异显示在日志中,但我没有看到ProgressDialog出现。后台操作不是在UI线程中发生的(它是AsyncTask),所以这不应该是问题吗?
非常感谢!你
答案 0 :(得分:3)
尝试将ProgressDialog放入AsyncTask中: 创建ProgressDialog并在PreExecute中显示它。 在后台进行下载并在PostExecute中关闭ProgressDialog。
答案 1 :(得分:1)
在AsyncTask中有三种方法......
OnpreExecute 您启动progressDialog,然后您的任务在在后台执行中运行。 完成在后台执行方法后, onPostExecute 方法正在调用自身,然后关闭对话框onPostExecute方法....
答案 2 :(得分:0)
如果您没有看到ProgressDialog
,我认为这是因为Context
。
您确定UBActivity.this
是正确的Activity
吗?
我遇到了完全相同的问题,并通过将Context
传递给我的ASync类构造函数来修复它。