Android Looper和Handler分析

 第一次接触android应用程序(这里指的是JAVA层的UI程序,也难怪了,Google放出的API就只支持JAVA应用程序了),很难搞明白内部是如何实现的。但是,从原理上分析,应该是有一个消息循环,一个消息队列,然后主线程不断得从消息队列中取得消息并处理之。

然而,google封装得太厉害了,所以一时半会还是搞不清楚到底是怎么做的。本文将分析android内的looper,这个是用来封装消息循环和消息队列的一个类,handler其实可以看做是一个工具类,用来向消息队列中插入消息的。好比是Windows API的SendMessage中的HANDLE,这个handle是窗口句柄。

那怎么往这个消息队列中发送消息呢??调用looper的static函数myQueue可以获得消息队列,这样你就可用自己往里边插入消息了。不过这种方法比较麻烦,这个时候handler类就发挥作用了。先来看看handler的代码,就明白了。

 讲了这么多,该怎么创建和使用一个带消息循环的线程呢?

好了,handler和looper的分析就都这了,其实原理挺简单的。

 

 

  • 4
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 41
    评论
Android开发中,主线程(也被称为UI线程)负责处理与用户交互的操作,例如响应用户的点击事件、更新UI界面等。而子线程则是用于执行一些耗时的任务,比如网络请求、数据库操作等。 为了实现在子线程中更新UI界面的需求,Android提供了HandlerLooper机制。Looper是一个负责循环消息队列的类,它负责从消息队列中取出消息,然后将其分发给对应的Handler进行处理。 在子线程中使用Looper来处理消息时,需要首先调用Looper.prepare()方法来准备Looper,然后调用Looper.loop()方法来循环处理消息,直到Looper.quit()被调用停止循环。在调用Looper.loop()之前,需要先创建一个Handler的实例,并将其与当前线程的Looper关联起来。这样,子线程中的Looper才能将消息分发给相应的Handler进行处理。可以使用Handler的post()、sendMessage()等方法来向子线程的消息队列中发送消息。 使用子线程的LooperHandler机制,可以实现在子线程中更新UI界面的需求,避免在主线程中执行耗时操作导致界面卡顿的问题。然而,需要注意的是,在子线程中使用LooperHandler时要避免在UI界面的更新操作过于频繁,以免影响用户体验和性能。 总结一下,Android在子线程中使用LooperHandler的目的是为了实现在子线程中更新UI界面的需求,通过创建Looper实例并循环处理消息,将消息分发给对应的Handler进行处理。这样就能在子线程中更新UI界面,提高程序的性能和用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 41
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值