Android Handler解析

背景

首先,当你有一些需要联网/耗时的任务要做时,不能在主线程中做,这时候就需要采用多线程,也就是把任务分发给其他的线程。
最简单的就是AsyncTask,简单说来就是AsyncTask适用于轻量级简单的异步操作。
封装好的就是用handler了。

有兴趣的自行百度“handler和AsyncTask”

android handler的作用?

下面你的不知道没关系:

HandlerThread包含Thread和Looper(Looper是消息循环)

Looper包含当前Thread和消息队列(MessageQueue)

一个Handler对应一个looper,一个消息对应一个handler。

因为Handler和当前线程和looper关联,looper又控制着这个线程的消息,所以,可以通过外部间接调用handle向消息队列中添加消息——比如obtainMessage()——然后再重写handler的处理函数handlerMessage()来处理别人发过来的消息。

具体来说

新建一个HandlerThread子类,建立一个public函数以供外部调用

重写HandlerThread子类中的onLooperPrepared()方法,在其中new Handler;

重写Handler的handleMessage()真正做事。——有必要时系统会自动调用。

在外部可调用的函数中,Handler对象obtainMessage().sendToTarget(),创建message(其实是从message池取出可用的消息),并且把消息加到线程的消息队列。


补充:
message代表了外部想要该线程想要做的事,Looper包含了一个消息队列,代表了外部想要该线程做的所有事,Handler类的handleMesssage()方法是该线程会怎么做,当安卓发现线程的消息队列还有消息没有处理时,就会自动调用这个函数来处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值