Android ProgressDialog没有旋转

时间:2017-07-17 20:25:04

标签: android

进度对话框微调轮在执行实际工作时停止旋转。当我的其他工作正在进行时,我怎样才能让它继续转动轮子.......

    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);

3 个答案:

答案 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();