Android Looper和Handler分析(16)
来源:未知 责任编辑:责任编辑 发表时间:2014-04-20 03:36 点击:次
Looper.loop();开启消息循环
}
ThreadWithMessageHandle threadWithMgs = new ThreadWithMessageHandle();
threadWithMsg.start();
Looper looper = threadWithMsg.myLooper;//
//这里有个问题.threadWithMgs中的myLooper可能此时为空
//需要同步处理一下
//或者像API文档中的那样,把handler定义到ThreadWithMessageHandle到去。
//外线程获得这个handler的时候仍然要注意同步的问题,因为handler的创建是在run中的
Handler threadHandler = new Handler(looper);
threadHandler.sendMessage(...)
}
}
...
Cpp代码
//假设在onCreate中创建一个线程
//不花时间考虑代码的完整和严谨性了,以讲述原理为主。
....
... onCreate(...){
//难点是如何把android中的looper和java的thread弄到一起去。
//而且还要把随时取得这个looper用来创建handler
//最简单的办法就是从Thread派生一个
class ThreadWithMessageHandle extends Thread{
//重载run函数
Looper myLooper = null;
run(){
Looper.prepare();//将Looper设置到这个线程中
myLooper = Looper.myLooper();
Looper.loop();开启消息循环
}
ThreadWithMessageHandle threadWithMgs = new ThreadWithMessageHandle();
threadWithMsg.start();
Looper looper = threadWithMsg.myLooper;//
//这里有个问题.threadWithMgs中的myLooper可能此时为空
//需要同步处理一下
//或者像API文档中的那样,把handler定义到ThreadWithMessageHandle到去。
//外线程获得这个handler的时候仍然要注意同步的问题,因为handler的创建是在run中的
Handler threadHandler = new Handler(looper);
threadHandler.sendMessage(...)
}
}
...
好了,handler和looper的分析就都这了,其实原理挺简单的。
作者“子弹头”
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>