2019独角兽企业重金招聘Python工程师标准>>>

Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理。handler其实可以看做是一个工具类,用来向消息队列中插入消息的。

(1) Looper类用来为一个线程开启一个消息循环。 
    默认情况下android中新诞生的线程是没有开启消息循环的。(主线程除外,主线程系统会自动为其创建Looper对象,开启消息循环。) 
    Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。

(2) 通常是通过Handler对象来与Looper进行交互的。Handler可看做是Looper的一个接口,用来向指定的Looper发送消息及定义处理方法。 
    默认情况下Handler会与其被定义时所在线程的Looper绑定,比如,Handler在主线程中定义,那么它是与主线程的Looper绑定。 
mainHandler = new Handler() 等价于new Handler(Looper.myLooper()). 
Looper.myLooper():获取当前进程的looper对象,类似的 Looper.getMainLooper() 用于获取主线程的Looper对象。

(3) 在非主线程中直接new Handler() 会报如下的错误: 
E/AndroidRuntime( 6173): Uncaught handler: thread Thread-8 exiting due to uncaught exception 
E/AndroidRuntime( 6173): java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
原因是非主线程中默认没有创建Looper对象,需要先调用Looper.prepare()启用Looper。

(4) Looper.loop(); 让Looper开始工作,从消息队列里取消息,处理消息。

注意:写在Looper.loop()之后的代码不会被执行,这个函数内部应该是一个循环,当调用mHandler.getLooper().quit()后,loop才会中止,其后的代码才能得以运行。

(5) 基于以上知识,可实现主线程给子线程(非主线程)发送消息。

把下面例子中的mHandler声明成类成员,在主线程通过mHandler发送消息即可。 
    
    Android官方文档中Looper的介绍: 
Class used to run a message loop for a thread. Threads by default do not have a message loop associated with them; to create one, call prepare() in the thread that is to run the loop, and then loop() to have it process messages until the loop is stopped.

Most interaction with a message loop is through the Handler class.

This is a typical example of the implementation of a Looper thread, using the separation of prepare() and loop() to create an initial Handler to communicate with the Looper.

class LooperThread extends Thread {public Handler mHandler;public void run() {Looper.prepare();mHandler = new Handler() {public void handleMessage(Message msg) {// process incoming messages here}};Looper.loop();}
}

转载于:https://my.oschina.net/u/874134/blog/158680

android looper介绍相关推荐

  1. android AsyncTask介绍(转)

    android AsyncTask介绍 AsyncTask和Handler对比 1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接 ...

  2. Android类库介绍

    Android类库介绍 GPhone开发包Android SDK含了很多丰富的类库: android.util 涉及系统底层的辅助类库 android.os 提供了系统服务.消息传输.IPC管道 an ...

  3. 1.android体系结构介绍

    一.Android的介绍 android介绍见百度百科:Android的介绍,度娘把Android介绍的这么清楚,如果谷歌是Android的爹,那度娘就是娘了. 二.Android的架构图 andro ...

  4. 【转】Android bluetooth介绍(三): 蓝牙扫描(scan)设备分析

    原文网址:http://blog.csdn.net/xubin341719/article/details/38584469 关键词:蓝牙blueZ  A2DP.SINK.sink_connect.s ...

  5. 作业Android自我介绍

    ***Android自我介绍***

  6. Android HIDL 介绍学习之客户端调用

    应上一篇文章Android HIDL 介绍学习_Super Jang的博客-CSDN博客_安卓hidl读者的要求,本文更新客户端调用方法. hidl的客户端调用相比服务端的实现要简单很多,本次我们通过 ...

  7. Android开发介绍

    Android开发介绍 这个教程设计是帮助你学习基础的Android开发和快速搭建您的开发环境.这个是在我的Window 7上编写的,当然它也支持Linux(uBuntu).Mac OS其他支持And ...

  8. android 模拟器的使用(Android模拟器介绍及创建)

    做了这么久的android开发,一直想把在开发过程中积累的经验或问题总结一下,可是都没有时间,现在有一点点空闲,所以慢慢把我在android中遇到的问题整理一下写出来,供自己以后参考,也希望和大家一起 ...

  9. Android bluetooth介绍(一):基本概念及硬件接口

    关键词:蓝牙硬件接口 UART  PCM  blueZ  版本:基于android4.2之前版本 bluez 内核:linux/linux3.08 系统:android/android4.1.3.4 ...

  10. Android bluetooth介绍(二): android 蓝牙代码架构及其uart 到rfcomm流程

    关键词:蓝牙blueZ  UART  HCI_UART H4  HCI  L2CAP RFCOMM  版本:基于android4.2之前版本 bluez内核:linux/linux3.08 系统:an ...

最新文章

  1. PyTorch中的C++扩展
  2. 文件系统及程序的限制关系: ulimit
  3. 您知道您客户的数据价值几何吗?
  4. shell脚本zookeeper日志定时清理
  5. 标识符的作用域与可见性
  6. TCP连接、Http连接与Socket连接
  7. 一个Http请求的流程
  8. 过滤器在图纸上的符号_看不懂电气图纸?资深级老师傅教你如何识图,学会后受用一生...
  9. php array函数 array_slice截取数组
  10. 算法面试题(数据结构)
  11. wps xml转换表格_PDF转换神器安装步骤
  12. 汽车一键启动 汽车手机远程启动系统  汽车无钥匙进入 手机APP控车智能防盗
  13. Android夜神模拟器
  14. 让代码飞起来,可以很清晰的分清代码 彩虹括号
  15. java 把文件压缩成zip文件
  16. 51单片机c语言算法大全,51单片机C语言实例(350例)Proteus仿真和代码都有
  17. 三极管电路必懂的几种分析方法
  18. linux退出guest用户_linux中guest 用户就是nobody吗?
  19. predict函数 R_R工程化(1) Rest API 之plumber包
  20. 图像分析之曲率滤波(困惑篇)

热门文章

  1. main.cpp first defined here 解决
  2. paip.silverlight设计器载入异常NullReferenceException问题。
  3. 2019券业IT投入突破200亿!国君华泰中信均超10亿,新评价标准下东财、平安、东方、安信、中泰加分最多
  4. 真格基金王强:判断一个项目好坏,我会做五个思考!
  5. 聪明贝塔(Smart Beta)
  6. (转)2017德勤技术趋势报告:未来8年,机器智能如何创造价值
  7. 阿里云解决方案架构师李晨:百万级价签系统的实时洞察与创新实践
  8. 机器学习笔记(十八):模型正则化
  9. 阿里38号元老:管理要轻,文化要浓
  10. 【优化算法】多跟踪器优化算法 (MTOA)【含Matlab源码 1090期】