具有线程问题的Android ProgressDialog

我正在运行进程时使用ProgressDialog遇到问题.我已经尝试了所有不正确的方法,并查看了许多网站,提供了我想要做的例子但是,我仍然遇到线程在ProgressDialog出现之前运行的问题.这是我最近的尝试:

new Thread(new Runnable() {
     public void run() {
        dialog = new ProgressDialog(EPD.this);
        dialog.setMessage("Loading. Please Wait...");
        dialog.show();         
                    }
 }).run();
 getMostWanted();                       

除了尝试这种方式,我还试图在getMostWanted()中使用新的Thread,但是我仍然有相同的结果.它在getMostWanted()和没有对话框时暂停约4或5秒.

在此先感谢您的帮助.

解决方法:

如果你在主线程上,你应该使用它来显示ProgressDialog并为getMostWanted()分离另一个线程.假设你想要getMostWanted()的结尾来关闭对话框,你应该看看AsyncTask

private class GetMostWanted extends AsyncTask<Void, Void, Void> {
     private final ProgressDialog dialog;

     public GetMostWanted() {
          dialog = new ProgressDialog(EPD.this);
          dialog.setMessage("Loading. Please Wait...");
     }

     protected void onPreExecute() {
         dialog.show();
     }

     protected void doInBackground(Void... unused) {
         getMostWanted();
     }

     protected void onPostExecute(Void unused) {
         dialog.dismiss();
     }
 }

这样你的处理就在doInBackground()中的后台线程上执行,然后你就可以在onPostExecute()中关闭主线程上的对话框了.

现在你可以使用:

new GetMostWanted(dialog).execute();

上一篇:用于Android的小ProgressDialog“微调器”


下一篇:ProgressDialog带进度的Dialog