为了账号安全,请及时绑定邮箱和手机立即绑定

问题 Bean对象

没理解 为什么要将 那3个变量 ,打包成一个Bean对象。

正在回答

3 回答

在显示GridView的时候,适配器的getView方法会被多次调用,因此loadImage也会被多次调用,而每次调用loadImage都会通过refreashBitmap方法来mUIHandler.sendMessage,而Task中refreashBitmap会新的线程中去执行,因此也许会有多个线程并发执行,也许当执行某一个loadImage的时候,正好mUIHandler的handleMessage也刚好在处理一个非该loadImage而sendMessage的message(注意:mUIHandler的handleMessage是在主线程中),如果不用ImgBeanHolder,就可能导致用msg.obj来取bitmap与刚才说的loadImage的参数的path和imageView发生错乱

1 回复 有任何疑惑可以回复我~

在mUIHandler中的handleMessage中不能直接用msg.obj来取bitmap(前提是在sendMessage的时候只在msg.obj中绑定bitmap)然后根据loadImage方法参数path和imageView来设置图片,因为mUIHandler中的handleMessage在执行的时候所获得的bitmap不一定是当前的(与之对应的)path和imageView(也就是当前loadImage方法的参数path和imageView,因为mUIHandler是在loadImage中初始化的,所以mUIHandler的handleMessage可以直接调用loadImage方法的参数path和imageView),因为我们会根据path用getBitmapFromLruCache方法在缓存中获取图片,或者异步去加载(开启新的线程去加载),加载完成后会回调mUIHandler中的handleMessage


1 回复 有任何疑惑可以回复我~

由于是在线程中处理的bitmap以及imageView,而在handler所在的那个函数中,imageView、path、bitmap是不确定是否为当前传入的变量。因此封装成一个bean对象,防止出现错误。还有个好处就是message对象可以携带一个object对象,因此将三个变量封装bean对象,也是极好的

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android-仿微信图片选择器
  • 参与学习       29299    人
  • 解答问题       88    个

微信中的图片选择器综合案例不容错过,整体思路值得一学

进入课程

问题 Bean对象

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信