android Looper Handler
来源:互联网 发布:macbookpro破解软件 编辑:程序博客网 时间:2024/06/01 14:54
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(); }}
单向的消息触发模型.
每个线程可以对应一个消息循环队列Looper.消息循环队列Looper提供一个句柄Handler, 其他线程获得该Looper的句柄Handler可以将消息发给该消息循环队列Looper.
可以通过重写handleMessage对消息进行处理.
Looper.prepare()是创建消息循环队列
Looper.loop()是启动该消息循环队列.Looper.loop()相当于一个循环,没有消息时将会等待,有消息则进行处理.
所以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(); //could not run this code Log.v("test", "hello"); }}
只有在Looper结束后会执行Looper.loop()后的代码.你可以在handleMessage中调用Looper.quit().像下面这样.
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.myLooper().quit(); //or this.getLooper().quit(); } }; Looper.loop(); //could not run this code Log.v("test", "hello"); }}
注意Activity结束或者被覆盖时要根据应用的逻辑将相应的线程退出,显然Looper对应的线程一直在等待和处理消息.
那么一定要调用Looper.quit().
但是一般不像上面那样结束Looper,在别的线程,一般是主控线程或逻辑控制线程,可以通过Looper的句柄handler来处理.
调用mHandler.getLooper().quit()即可.
android的主线程默认是有消息循环队列的.因此不需要调用Looper.prepare().
public class TestActivity extends Activitypublic Handler m_handler;public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //don't need to call Looper.prepare() m_handler = new Handler(){ public void handlMessage(Message msg){ //handle msg here } }; //neither Looper.loop() } }
- android looper handler 多线程
- Android handler looper
- android looper和handler
- android Looper Handler
- android Looper& Handler
- Android Looper和Handler
- Android Looper和Handler
- android handler和looper
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- Android Looper和Handler
- android handler和looper
- MFC 移动无标题对话框
- Source Insight 使用与配置
- linux系统监控(六)--- vmstat 详解
- MD14/MD15计划订单转采购申请清除供货源 user-exit LMEQR001
- MFC学习——鼠标拖动无标题栏的对话框
- android Looper Handler
- SVN插件不显示标记的解决办法
- 部分常用JS整理
- CO12 PP定单确认:生产订单报工人员编号输入检查user-exit CONFPP02
- 各种流行的界面换肤控件库比较
- UML建模工具
- 原码 反码 补码
- linux系统监控(七)--- mpstat 详解
- SD 销售订单的BADI增强SD_BADI_PRICE_CHECK