进度对话框微调轮在执行实际工作时停止旋转。当我的其他工作正在进行时,我怎样才能让它继续转动轮子.......
progressdialog.setMessage("Please wait. . .");
progressdialog.setCancelable(false);
progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressdialog.show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
loadFormView(m_table, m_rLayout, m_param);
}
});
progressdialog.dismiss();
}
}, 100);
答案 0 :(得分:1)
如果loadFormView
是你的“工作”,那就需要以某种方式在后台线程上发生(线程,意图服务,异步任务等)。
现在你在UI线程上运行“工作”,这将阻止旋转动画的进展。
答案 1 :(得分:1)
https://developer.android.com/reference/android/os/AsyncTask.html
以下是一个如何在您的案例中使用异步任务的示例(代码未经过测试,但是沿着这些行进行了测试):
private class LoadTask extends AsyncTask<Void, Void, Void> {
protected void onPreExecute(){
progressdialog.show();
}
protected void doInBackground(Void params) {
loadFormView(m_table, m_rLayout, m_param);
return void;
}
protected void onPostExecute(Void result) {
progressdialog.dismiss();
}
}
//start the task
new LoadTask().execute();
答案 2 :(得分:0)
这可能适合你。尝试这样做:
progressdialog.setMessage("Please wait. . .");
progressdialog.setCancelable(false);
progressdialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressdialog.show();
final Handler h = new Handler.postDelayed(new Runnable() {
public void handleMessage(Message message) {
progressdialog.dismiss();
}
};
Thread checkUpdate = new Thread() {
public void run() {
// YOUR WORK
h.sendEmptyMessage(0);
}
}, 1000);
checkUpdate.start();