我想要做的是向用户提供有关工作进度和后台计算进度的信息(如“登录”,“检索文档”,“分析文档”等)。
只会显示艺术品,并且只有在完成所有工作后才会发生。我做错了什么,实现这个的正常方法是什么?
以下是说明问题的示例代码。在循环完成之前,Toast和ProgressDialog都不会显示:
ProgressDialog.show(this, "Working", "Performing calculation");
CharSequence text = "Performing calculation";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(this, text, duration);
toast.show();
for(int i = 0; i < 5000; i++) {
Log.d("Debug", Integer.toString(i));
}
赞赏正确方向的任何一点。
答案 0 :(得分:2)
您所描述的具有后台流程的方案,并且您希望向用户更新有关进度的方案应使用AsyncTask
来处理,其中您有doInBackground()
和{{1}等方法}。
答案 1 :(得分:1)
如果要执行后台操作,则应考虑使用AsyncTask
或其他Thread
来执行此操作。否则,您将阻止UI执行那些对最终用户来说难看的任务。看一下本教程:
http://www.vogella.com/articles/AndroidPerformance/article.html