2

我想做的是向用户提供有关工作进度和在后台执行的计算的信息(如“登录”、“检索文档”、“分析文档”等)。

所发生的只是展示艺术作品,并且只有在所有工作完成之后。我做错了什么,实现这个的正常方法是什么?

下面是说明问题的示例代码。在循环完成之前,既不显示 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)); 
}

任何正确方向的观点都值得赞赏。

4

2 回答 2

2

您描述的场景中您有一个后台进程并且您希望向用户更新有关进度的情况应该使用AsyncTask您拥有的方法来处理,例如doInBackground()onProgressUpdate()

于 2012-06-17T15:01:57.923 回答
1

如果您想执行后台操作,您应该考虑使用AsyncTask, 或不同的Thread方式来完成这项工作。否则,您将阻止 UI 执行那些对最终用户来说很难看的任务。看看这个教程:

http://www.vogella.com/articles/AndroidPerformance/article.html

于 2012-06-17T15:00:57.450 回答