为了账号安全,请及时绑定邮箱和手机立即绑定
后台轮询线程(Thread)不断访问任务队列(LinkList<Runnable>),如果任务队列中有加载图片的任务(Runnable),就通过Handler发消息给线程池(ExecuterService),让线程池拿出一个子线程,然后根据调度任务的策略(LIFO)从任务队列中取出一个任务去完成图片的获取,因为图片是异步的在子线程中获取到的,不能直接显示,所以需要通过一个UI相关的Handler把图片对象发送到UI线程中,最后完成图片的显示。把这个逻辑搞清楚了,回头再看看,需要设计哪些变量,一目了然。
确实现在有一部分人伸手惯了,不懂的感恩。你要付费,可以手把手教你。自己什么也不付出,还在这YY,影响大家的学习心情。
资源下载去哪里了
这是用Thread、Handler、Message自己实现图片加载功能,且包含了内存缓存和图片压缩,实际上也就是实现了一个图片加载库,帮助我们搞清楚原理,在不清楚原理的情况下可以用第三方库直接在GridView显示本地图片,但要注意不要使用磁盘缓存...
鸿神叼的一逼
感觉总体规划上还可以更加改进
不过内容很多 能学习到的地方也很多 谢谢啦
用wait和nofityall更简单啊。
其实用HandlerThread实现和用Thread+Handler机制是一样的。用HandlerThread,其实也是创建了Thread,Thread里创建了Looper对象,然后将线程的Looper对象传递给Handler,自然handler的消息处理是在子线程中执行了。

学习要知其然,更要知其所以然。
这里我说一下UI线程中Handler的创建和子线程中Handler的创建。其实,这个Util里,初始化UI Handler的时候,应该如下:
mUIHandler = new Handler(Looper.getMainLooper());

是为了防止这个类在子线程中调用,导致UI Handler失效。

看过Handler、Looper、Message源码的同学应该知道,Handler默认构造函数中,会获取当前所在线程的Looper作为自己的Looper对象。所以,Handler在UI线程中初始化,获取的是UI的Looper,在子线程中初始化,获取的是子线程的Looper。
源代码在哪 小伙伴们截个屏找不到啊
源码哪里下载请问
过段时间再来看,现在有些许蒙,要学的太多了
课程须知
1.掌握Java基础 2.熟练掌握Android常用技术
老师告诉你能学到什么?
1.单例模式在项目中的实践 2.图片的缓存与压缩 3.线程轮询与并行 4.反射机制在Android中的使用 5.Handler-线程间通信

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消