我正在运行进程时使用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();