A线程负责展示图片,B线程负责下载图片但是有的时候会出现当A 需要展示的时候B还没有把图片下载完成,这时候是不能展示的,如何让A知道图片已经下载完了,可以展示了,在没有下载完之前等待B线程?难不成只能写写循环判断么?太傻了吧

解决方案 »

  1.   

    A线程 是UI线程的话直接定义一个Handler,然后b线程现在完成后通过handler发送消息通知给a线程啊。
    b线程完成:
    Message msg = handler.obtainMessage();
    msg.... = 1;
     handler.sendMessage(Message)然后A线程中:Handler handler = new Handler() {
                     public ......handlerMessge(msg) {
                     if(msg...==1) {
                         更新
                       }
                      }
                }
      

  2.   

    这种方法不能用,因为A线程是用户触发的,我不能在B线程下载一张就通知A加载一张,需要等用户点击但是有的时候用户点击过快,所以B还没有下载完,用户就点击了,这时候就会出现我上面说的情况。我的B线程其实是一个预读线程,不能发handel。 还有没有别的办法啊
      

  3.   

    http://blog.csdn.net/mylzc/article/details/6771331
    用hander looper .
      

  4.   

    没看懂楼主的问题,用Handler为什么不行。 你的A线程难道不是主线程UI? 如果不是它怎么加载图片并显示?而且加载图片耗时并不大,也无需要专门开一线程啊。
      

  5.   

    不需要监听。如果你能把froyo中contact应用中头像加载的源码看懂,你就能实现自己想要的功能。contact 应用中负责优化头像加载 的类为 ContactPhotoLoader ,看懂它就行老。