Android中Looper简介
来源:互联网 发布:html css js 教程视频 编辑:程序博客网 时间:2024/05/18 02:43
Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。
(2)通常是通过Handler对象来与Looper交互的。Handler可看做是Looper的一个接口,用来向指定的Looper发送消息及定义处理方法。
默认情况下Handler会与其被定义时所在线程的Looper绑定,比如,在主线程中定义,其是与主线程的Looper绑定。
mainHandler = new Handler() 等价于newHandler(Looper.myLooper()).
Looper.myLooper():Return the Looper object associated with thecurrent thread 获取当前进程的looper对象。
还有一个类似的 Looper.getMainLooper() 用于获取主线程的Looper对象。
(3) 在非主线程中直接new Handler() 会报如下的错误:
E/AndroidRuntime( 6173): Uncaught handler: thread Thread-8exiting due to uncaught exception
E/AndroidRuntime( 6173): java.lang.RuntimeException: Can't createhandler 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发送消息即可。
(6) Android官方文档中Looper的介绍:
Class used to run a messageloop for a thread. Threads by default do not have a message loopassociated with them; to create one, call prepare()in the thread that is to runthe loop, and then loop()to have it process messagesuntil the loop is stopped.
Most interaction with a message loop is through theHandlerclass.
This is a typical example of the implementation of aLooper thread, using the separation of prepare()and loop()to create an initial Handlerto communicate with the Looper.
class LooperThread extends Thread {
}
- Android中Looper简介
- Android Looper简介
- Android Looper机制简介
- Android中Looper讲解
- Android中Looper类
- Android中Looper之ThreadLocal
- android 线程中创建消息循环Looper.prepare() Looper.loop()
- 浅谈android中Handler,Looper,Message
- Android 中Message,MessageQueue,Looper,Handler详解
- Android 中Message,MessageQueue,Looper,Handler详解
- Android中Looper/Handler学习笔记
- Android中Looper, Handler, MessageQueue的理解
- Android中Looper的实现原理
- Android中关于Handler looper参数设置问题
- Android线程中消息处理(Handle,Looper)
- Android中Handler、Looper、Message、MessageQueue详解
- Android中Looper,MessageQueue,ThreadLocal源码解析
- Android Looper
- Android 播放网络视频
- Android 视频编码学习!
- Android支持的音视频编码解码格式
- Android中Uri的使用
- Android阻塞对话框PopupWindow
- Android中Looper简介
- Android在程序中播放本地视频
- POJ 3020Antenna Placement
- H.264视频编码技术学习资源
- JSP上传视频后自动转成flv的核心JAVA方法
- 2012年5月SAT香港真题解析
- 用java程序调用ffmpeg执行视频文件格式转换flv
- 【微信分享】 微信分享集成 使用weixin js sdk 兼容 旧版本 2
- Android Shader渲染器:BitmapShader图片渲染