【发布时间】:2012-06-14 05:29:24
【问题描述】:
我有一个运行大约需要 3-5 秒的方法设置(因为它在线执行某些操作),我想显示一个加载对话框,但我不知道该怎么做,我尝试启动加载拨号在我调用该方法之前,然后尝试像这样将其关闭:
dialog.show();
myMethod();
dialog.cancel();
但是没有成功,有没有人有什么建议?
【问题讨论】:
标签: java android dialog loading progress
我有一个运行大约需要 3-5 秒的方法设置(因为它在线执行某些操作),我想显示一个加载对话框,但我不知道该怎么做,我尝试启动加载拨号在我调用该方法之前,然后尝试像这样将其关闭:
dialog.show();
myMethod();
dialog.cancel();
但是没有成功,有没有人有什么建议?
【问题讨论】:
标签: java android dialog loading progress
AsyncTask 是我的最爱,但你也可以使用 Handlers :)
花时间去体验这个美好的blog。
下面的 sn-p 会帮助你。
package org.sample;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
public class Hello extends Activity {
private Handler handler;
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
dialog = new ProgressDialog(this);
dialog.setMessage("Please Wait!!");
dialog.setCancelable(false);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.show();
new Thread() {
public void run() {
// Do operation here.
// ...
// ...
// and then mark handler to notify to main thread
// to remove progressbar
//
// handler.sendEmptyMessage(0);
//
// Or if you want to access UI elements here then
//
// runOnUiThread(new Runnable() {
//
// public void run() {
// Now here you can interact
// with ui elemements.
//
// }
// });
}
}.start();
handler = new Handler() {
public void handleMessage(android.os.Message msg) {
dialog.dismiss();
};
};
}
}
【讨论】:
在 UI 线程上运行持续时间较长的任务是“不可以”。使用AsyncTask 在后台运行长时间的任务并在完成时更新 UI。
【讨论】: