Android 线程 Looper.prepare()、Looper.loop()
来源:互联网 发布:冯扬 在线最优化求解 编辑:程序博客网 时间:2024/04/30 19:31
Looper用于封装了android线程中的消息循环,默认情况下一个线程是不存在消息循环(message loop)的,需要调用Looper.prepare()来给线程创建一个消息循环,调用Looper.loop()来使消息循环起作用,从消息队列里取消息,处理消息。
注:写在Looper.loop()之后的代码不会被立即执行,当调用后mHandler.getLooper().quit()后,loop才会中止,其后的代码才能得以运行。Looper对象通过MessageQueue来存放消息和事件。一个线程只能有一个Looper,对应一个MessageQueue。
以下是Android API中的一个典型的Looper thread实现:
以下是Android API中的一个典型的Looper thread实现:
//Handler不带参数的默认构造函数:new Handler(),实际上是通过Looper.myLooper()来获取当前线程中的消息循环,
//而默认情况下,线程是没有消息循环的,所以要调用 Looper.prepare()来给线程创建消息循环,然后再通过,Looper.loop()来使消息循环起作用。
//而默认情况下,线程是没有消息循环的,所以要调用 Looper.prepare()来给线程创建消息循环,然后再通过,Looper.loop()来使消息循环起作用。
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();}
另,Activity的MainUI线程默认是有消息队列的。所以在Activity中新建Handler时,不需要先调用Looper.prepare()。
- Android 线程 Looper.prepare()、Looper.loop()
- Android 线程 Looper.prepare()、Looper.loop()
- Android 线程 Looper.prepare()、Looper.loop();
- Android 线程 Looper.prepare()、Looper.loop();
- Android 线程 Looper.prepare()、Looper.loop() 使用
- Android 线程 Looper.prepare()、Looper.loop()
- Android 线程 Looper.prepare()、Looper.loop() Looper.prepare()和Looper.loop() —深入版
- android 线程中创建消息循环Looper.prepare() Looper.loop()
- Android -- Looper.prepare()和Looper.loop()
- Android -- Looper.prepare()和Looper.loop()
- Android -- Looper.prepare()和Looper.loop()
- Android -- Looper.prepare()和Looper.loop()
- [转]Android -- Looper.prepare()和Looper.loop()
- Android-Looper类,Looper.prepare()和Looper.loop()
- Android:Looper类,Looper.prepare()和Looper.loop()
- Looper.prepare()和Looper.loop()
- 笔记39 | Android线程之Looper.prepare()+Looper.loop()和HandlerThread()
- Android -- Looper.prepare()和Looper.loop() —深入版
- windows emacs R ess
- (原创)QT Creator的style sheet的几种用法(QT Creator)(StyleSheet)(样式)(QT4.7)(用法)
- NSString操作
- android设备adb usb驱动安装方法
- Android中Animation动画的介绍及用法
- Android 线程 Looper.prepare()、Looper.loop()
- extern与头文件(*.h)的区别和联系
- git 常用操作
- hadoop深入研究:(十)——序列化与Writable接口
- HDU 1297 Children’s Queue
- 解决X64操作系统PL/SQL连接报错问题 make sure you have the 32 bits oracle client installed
- 微博时代的企业公关危机特征研究
- zk工具类 ZkUtils 1.1版本 学习资料
- Oracle中的rowid学习