我创建了一个AsyncTask类,用于从后台获取数据(访问数据库)。

在onPreExecute()方法中,我创建一个进度对话框

        try {
            progressDialog = ProgressDialog.show(context, "",
                    "Please wait...", true);
            progressDialog.setIndeterminate(true);

        } catch (final Throwable th) {
            // TODO
        }


在onpostExecute()中

        protected void onPostExecute(Boolean result) {

            pinPoint();
            progressDialog.dismiss();
        }


我更新的课程,

@Override
        protected Boolean doInBackground(Void... params) {
            clust = getPinPointClusters();
            runOnUiThread(new Runnable() {
                public void run() {
                    plotClusters(clust);
                }
            });

            return true;
        }

        @Override
        protected void onPostExecute(Boolean result) {

            progressDialog.dismiss();
        }


在这里,pinpoint()方法将从服务器获取一些数据并将其固定在map中。
但是ProgressDialog中的progressBar不能设置动画...
请给我最好的方法...

谢谢

最佳答案

我建议您将pinPoint()方法放在doInBackground method中,可以将影响UI的pinPoint()方法的行保留在此方法下:

activityname.runOnUiThread(new Runnable() {
    @Override
        public void run()
         {
        // Put here the line which is changing the UI.
     }
});


示例:当任何行尝试更改doInBackground中的UI时,请执行以下操作:

 protected Boolean doInBackground(final String... args)
   {
     .
     .
     .
     .
    activityname.runOnUiThread(new Runnable() {
            @Override
                public void run()
                 {
                   eg. linearLayout.addView(ChildView);
             }
        });
     .
     .
     .
   }


现在,您只需要从onPostExecute()方法中取消ProgressDialog

10-08 18:05