千锋教育论坛

查看: 2582|回复: 21

【学习笔记】Handle的用法

[复制链接]

73

主题

206

帖子

485

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 10:40:54 | 显示全部楼层 |阅读模式
Handle的用法

一、主线程中创建 Handler 对象,并覆写 Handler 的方法

主线程中创建 Handler 对象,并覆写 Handler 的方法 void  handleMessage(Message msg)。在该方法中对收到的信息进行处理,一般是修改UI的动作。

然后在子线程中调用 Handler.sendMessage(Message)发送一个消息,则 handlerMessage 方法就可以接收到此处发送的消息,并更新UI。

注意:Message 对象虽然可以通过构造器来创建,但是出于效率考虑不建议这么做。
而是调用 Message 的静态方法 obtain()来获得 Message 对象。
另外更多时候,为了便利,会直接调用 handler 对象的 obtainMessage()方法,该方法内部仍然是调用的 Message.obtain();

二、主线程中创建Handler对象,不需要复写方法

然后在子线程中调用 Handler.post(Runnable) 发送一个 Runnable 的消息。在 Runnable 的 run 方法中的代码块都会在主线程中执行。。

注意:发送一个 Runnable 本质上还是发送一个 Message。

三、子线程中使用 Handler

a:调用 Loop.prepare();  
b:创建 Handler 对象。//此时 Handler 对象属于子线程,不能更新主线程创建的UI。
c:调用 Looper.loop();

注意:在线程中调用过 Looper.loop()之后,后面不能再写代码,因为 loop()内部是个死循环,后面的写的代码无法执行到。

然后在其他线程(含主线程)中调用 Handler.sendMessage(Message)发送一个消息,则子线程中的 Handler 对象的 handlerMessage 方法就可以接收到此处发送的消息,不能更新UI。

0

主题

143

帖子

314

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 11:16:20 | 显示全部楼层
看起来好棒 都是一家人

3

主题

183

帖子

416

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 11:21:27 | 显示全部楼层
哇!好强大的样子yeah

0

主题

143

帖子

314

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 11:36:49 | 显示全部楼层
不能不赞!!!!!!!!!

2

主题

319

帖子

711

积分

大牛

Rank: 4

发表于 17-3-31 13:24:30 | 显示全部楼层
不错啊,能一起去很好

22

主题

228

帖子

527

积分

大牛

Rank: 4

发表于 17-3-31 13:50:08 | 显示全部楼层
历经考验后才会是真正的一家人!学玩两不误啊!

0

主题

145

帖子

318

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 14:30:33 | 显示全部楼层
赞一个

58

主题

230

帖子

494

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 16:16:34 | 显示全部楼层
果然还是大千锋牛啊

26

主题

266

帖子

627

积分

大牛

Rank: 4

发表于 17-3-31 16:57:42 | 显示全部楼层
一直支持千锋

0

主题

143

帖子

314

积分

牛人

Rank: 3Rank: 3

发表于 17-3-31 17:23:18 | 显示全部楼层
真棒,速来围观。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

联系我们

电话:400-654-7778
交流群:523516910

点击咨询

学习资料

千锋教育

订阅|小黑屋|手机版|千锋教育论坛 ( 京ICP备12003911号-3 

GMT+8, 20-1-22 13:38 , Processed in 0.291471 second(s), 34 queries .

Powered by 千锋教育 X3.2

© 2001-2015

快速回复 返回顶部 返回列表