Handler的使用

本文详细阐述了Android应用中如何利用Handler和Looper实现异步任务处理,包括其基本概念、使用方法及常见应用场景。通过实例演示,帮助开发者掌握如何在不阻塞UI线程的前提下,高效执行耗时操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Handler的基本概念

有时候,你不可能把所有的功能都放到activity中,比如你想下载一个东西 ( 或者传输一份文件,或者其它耗时比较长的,甚至有可能没有结果的行为),需要花1分钟到2分钟的时间,你在下载的时候也想同时做点其它的事情,如果这个行为是写在activity方法中的话,那么下载的过程中activity是没有响应的,这样用户体验就很差。所以呢,下载这些东西需要放到另外的线程中,放到后台去进行,这样在下载的同时还可以进行其它的操作。

Handler其实主要是android为线程而弄出来的,它和调用它的Activity处于同一线程。消息是在消息队列中进行缓冲,一个一个的被送进去,然后再一个一个地被处理,谁送,谁处理呢???Handler。那么有了它一切就方便一些,在不考虑优先级的情况下,先进去的先被处理,一切都仅仅由Handler对象(记得定义Handler对象)的一些方法来搞定。


1) 如果数据处理很多,很费时,就要放在线程中做处理,不然UI卡住超过5s就异常了
但是线程中是不能主动更新UI的,所以要通过handler发消息,然后在消息处理里去做这个UI的更新。

2) UI的绘制不是所有都需要动画来实现,简单的东西可以通过handler来做,比如跑马灯的绘制,
动过handler的定时消息,以便在消息处理中进行UI的滚动绘制。

3) 其他的还有下载时进度条,开机动画等等,都是可以用handler来做的。


2.Handler的使用方法

举个例子吧,比如说我想每隔5秒钟输出一句话,那么按下某个start按钮以后,这个动作就开始了,每隔5秒就输出一句话,直到按下一个叫end的按钮,将消息对象从队列中移除。


3.至于hanlder和looper的使用,实现真正的异步,我还没有看懂,有点乱

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值