正在为Android应用程序开发自定义图块叠加实现。 我在后台处理图像下载时遇到了麻烦。
快速概述: 我有一个扩展Overlay的类(MapOverlay)。绘制方法基本上计算所需的图像(位图)以及在屏幕上绘制它们的x,y位置。然后我有一个AsyncTask循环遍历每个磁贴并下载图像,如果它不存在于存储卡上(本地缓存)然后一旦AsyncTask完成我然后循环图像并将它们绘制到传递的画布对象进入MapOverlay的draw方法。但是位图永远不会被绘制出来。
我已经通过在AsyncTask完成时记录canvas元素的宽度和高度做了一些基本的调试,但它为它们返回0,所以我猜测canvas对象不再可用于运行的代码在draw方法完成后,在AsyncTask的onPostExecute()中
如果没有线程,我的工作效果非常好,除了在图像下载阻止UI线程时平移时“冻结”。现在,我完全想要让线程工作
答案 0 :(得分:0)
当AsyncTask完成下载时,您是否尝试过调用postInvalidate()?这样,MapView.draw()中的调用将获取并绘制下载的叠加层(即如果您的缓存系统正常工作)。