版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dongfnag_HU/article/details/85008869
1.为什么有Handler?
在UI线程中不能进行耗时操作,例如数据读写、网络请求、图片加载等,所以这些操作被放在子线程里,Handler便是子线程和UI线程之间通信的桥梁之一。
2.干什么用的?
进行异步消息处理,即上述内容。
3.Handler类里面有什么是必须知道的?
3.1 消息类 : Message类
主要功能是进行消息的封装,同时可以指定消息的操作形式,Message类定义的部分变量如下:
(1)public int what:变量,用于定义此Message属于何种操作
(2)public Object obj:变量,用于定义此Message传递的信息数据,通过它传递信息
3.2 Looper类
主要功能是管理我们通过Handler发送出去的信息(即Message),主要方法如下:
(1)Looper()
该方法主要是建立了一个队列(queue),用来存储Message。
(2)prepare()
该方法首先检查当前线程是否已经拥有一个Looper(一个线程只能拥有一个Looper)。如果没有,通过set()方式,将一个Looper与线程相关联,即:set(new Looper())。
(3)loop()
该方法循环的将消息队列中的消息取出,交给Handler对象处理。
4.使用Handler有什么需要注意的吗?
那应该就是在UI线程里和子线程里使用Handler的方式不同,即UI线程会自动创建Looper对象,我们只需要使用Handler发送处理消息就好了,而在子线程中需要我们手动的创建Looper对象。
5.来个栗子可好?
传送门:http://www.runoob.com/w3cnote/android-tutorial-handler-message.html