Android ProgressBar使用AsyncTask并处理GoogleMap对象

Android ProgressBar使用AsyncTask并处理GoogleMap对象,android,android-asynctask,progress-bar,google-maps-android-api-2,Android,Android Asynctask,Progress Bar,Google Maps Android Api 2,我使用一个AsyncTask从db(在doOnBackground()中)检索数据,并准备将其显示给用户。在这些操作过程中,ProgressBar可以完美地旋转 当我需要对对象GoogleMap进行操作以绘制多段线、标记等时,所有这些工作都由onPostExecute()完成,ProgressBar停止旋转 有一种方法可以在“谷歌地图”上操作,并让进度条旋转,这样用户就可以知道应用程序正在工作吗? 谢谢定义一个本地进度类,它可以保存地图更新所需的所有信息。然后可以逐个发布进度,并在onProgr

我使用一个AsyncTask从db(在doOnBackground()中)检索数据,并准备将其显示给用户。在这些操作过程中,ProgressBar可以完美地旋转

当我需要对对象GoogleMap进行操作以绘制多段线、标记等时,所有这些工作都由onPostExecute()完成,ProgressBar停止旋转

有一种方法可以在“谷歌地图”上操作,并让进度条旋转,这样用户就可以知道应用程序正在工作吗?


谢谢

定义一个本地进度类,它可以保存地图更新所需的所有信息。然后可以逐个发布进度,并在onProgressUpdate中更新映射。
OnProgressUpdate不仅限于更新进度条。

在AsyncTask的onPreExecute()方法中显示ProgressDialog,在onPostExecute()中显示Finish Dialog。。在doInBackground()中完成您的所有任务…我可以从doOnBackground()操作GoogleMap对象而不违反“请勿从UI线程外部访问Android UI工具包”的规则吗?您的错误是什么?你卡在哪里?@Heshan Sandepa没有错,我在问是否有办法在ProgressBar继续旋转时更新GoogleMap对象(需要几秒钟的更新)。我尝试了,但没有成功,因为在doOnBackground()中有一个For{}cicle来添加所有多段线、标记等。。。每次调用onProgressUpdate(),都需要一些时间来更新对象GoogleMap,同时doOnBackground()中的For{}cicle继续运行。最后,我在谷歌地图上只有很少的更新。啊,我明白了。我认为你可以在你的doOnBackground中保持一个同步队列,在其中推送信息。然后将此队列传递给onProgressUpdate(使用本地进度类)。如果使用BlockingQueue,请确保不要尝试从UI线程中的空队列进行轮询!我尝试了类似的方法,每次调用publishProgress()(因为doOnBackground中的for循环将继续执行1步),我将布尔检查设置为false,以便doOnBackground中的循环在该检查为true之前无法继续。onProgressUpdate()完成其工作时为真。它可以工作,但不是很好,因为它需要的不是一些秒的计算,而是超过80秒的时间。同情现在我使用旋转阻止(或者不需要旋转的消息)。你为什么停在doOnBackground?至此,您当然正在序列化这两个任务,这两次都将进行总结。对于并发工作,doOnBackground方法应该持续地推入队列并发布它,onProgressUpdate应该从队列中拉出并绘制它。