我创建了一个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
。