如何在android中正确处理进度对话框?

时间:2012-03-05 07:19:26

标签: java android

我是android和java的新手。我在正确实施进度对话框时遇到了麻烦。

我有这样的代码

   ProgressDialog dialog= new ProgressDialog(Main.this);
   dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
   dialog.setMax(100);
   dialog.show();
   MY METHOD WHICH GRABS DATA FROM INTERNET;
   dialog.dissmiss();

但通过实现这个,我的方法运行良好,但没有进度对话框是可见的,再次当我注释掉解除方法,对话框没有停止,我不得不强制关闭应用程序,然后如何使用此对话框?在aditional不想在这里带任何线程,有没有办法使用没有任何线程的对话框?感谢

3 个答案:

答案 0 :(得分:4)

问题在于,任何长时间运行的任务(例如从Internet获取数据)必须在单独的线程内运行,否则如果代码运行超过5秒,则可能会获得ANR。我认为理想的解决方案是实现AsyncTask:它允许您在单独的线程中运行任务,并帮助您轻松更新UI线程,显示ProgressDialogProgressBar s您的用户知道您的应用当前正忙。只需将所有ProgressDialog初始化代码放在onPreExecute()的{​​{1}}方法内,并AsyncTask调用dialog.dismiss()。希望这会有所帮助。

答案 1 :(得分:1)

是的,您不需要使用Thread类。您可以改用AsyncTask。在调用AsyncTask时启动进度对话框,在postExecute方法中将其关闭。

答案 2 :(得分:1)

我个人更喜欢AsyncTask进行进度对话。

在onPreExecute中,创建上面的代码。在doInBackground中,执行后台任务并在onPostExecute中显示一个表示已完成工作的alertdialog!