写代码的四点:
1.明确需求。要做什么?
2.分析思路。要怎么做?(1,2,3……)
3.确定步骤。每一个思路要用到哪些语句、方法和对象。
4.代码实现。用具体的语言代码将思路实现出来。
学习新技术的四点:
1.该技术是什么?
2.该技术有什么特点?(使用需注意的方面)
3.该技术怎么使用?(写Demo)
4.该技术什么时候用?(在Project中的使用场景 )
----------------------早计划,早准备,早完成。-------------------------
为什么要有Handler?
1.主线程不能做耗时操作(例如访问网络,数据库操作),要放在子线程;
2.子线程又不能修改主线程的UI;
所以就需要用到Handler,在子线程处理完成后,通知主线程更新UI。Handler是线程间通信的工具,就是用来解决线程和线程之间的通信的。
注:主线程也不能修改子线程创建的UI。
Handler的原理:
Android中提供了一种异步回调机制Handler,可以在完成一个很长时间的任务后做出相应的通知。
图解:使用Handler.sendEmptyMessage(0)发送一个Message之后,会把Message放到MessageQueue队列中,该队列属于某个Looper对象。每个Looper对象通过ThreadLocal.set(new Looper)跟一个Thread绑定在一起,该Looper对象所属的线程在Looper.loop中循环执行获取MessageQueue队列中的Message对象的操作,并将Message对象交给Handler处理,调用Handler的dispatchMessage方法。
注:1.sendEmptyMessage到handlerMessage的过程,途中经过Looper.MessageQueue队列,转由Looper所属的线程去处理,这是一个异步的过程。(Looper所属的线程可以是sendEmptyMessage所在的线程)
2.Looper.prepare()和Looper.loop()之间的代码是运行在主线程的。
---------------------------------------------------------------------------------------------------------------------------
早计划,早准备,早完成。 欢迎关注!交流!Star!
GitHub:https://github.com/wangyang0313
微信公众号:一个灵活的胖子MrWang
简书:https://www.jianshu.com/u/e5e733d79b96