android handler Message 的使用备忘录
来源:互联网 发布:山东省网络问政 编辑:程序博客网 时间:2024/04/30 09:38
在使用handler和message时,可以参考这两篇文章和文章,有两点需要记住:
1 每个线程只能有一个looper
2 主线程默认有looper
在向主线程的looper发送消息时,可以在多线程中采用如下方法,其中Message携带了一个Bundle的data,可以传递参数等:
while(playStatus){ try { //绑定成功才能开始更新UI if(mBound){ //发送消息,要求更新UI Message msg = new Message(); data.clear(); progress = mService.getProgress(); msg.what = 0; data.putDouble("progress", progress); msg.setData(data); mHandler.sendMessage(msg); } Thread.sleep(milliseconds); //Thread.currentThread().sleep(milliseconds); //每隔100ms更新一次UI } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); }但是看了第二篇参考才知道,获得Message的构造方法最好的方式是调用Message.obtain() 和 Handler.obtainMessage()方法。具体的可以看一下obtain()的源码,学渣就不说了。
还有在实际的编码中,学渣遇到了如下问题:
<pre name="code" class="java"> public class MyThread implements Runnable{ //用来向UI线程传递进度的值 Bundle data = new Bundle(); //更新UI间隔时间 int milliseconds = 100; double progress; //Message 没有每次都new,而是想使用同一个对象,出错Message msg = new Message(); @Override public void run() { // TODO Auto-generated method stub //用来标识是否还在播放状态,用来控制线程退出 while(playStatus){ try { //绑定成功才能开始更新UI if(mBound){ //发送消息,要求更新UI data.clear(); progress = mService.getProgress(); msg.what = 0; data.putDouble("progress", progress); msg.setData(data); mHandler.sendMessage(msg); } Thread.sleep(milliseconds); //Thread.currentThread().sleep(milliseconds); //每隔100ms更新一次UI } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
在上述代码中Messag没有使用new或者obtain(),而是使用同一个Message对象,结果出错,不知道为什么,难道是MessageQueue在取Message后会销毁这个Message对象么,求指导。。。
0 0
- android handler Message 的使用备忘录
- Android的Message机制---Handler、Message、Looper
- Handler、Message的简单使用
- Android-------Handler,Thread,Message使用范例
- Android Handler Message 在使用多个Handler时,接收不到消息的处理办法
- 关于android Handler Message Looper的理解
- android Looper Message Handler中三者的关系
- android handler和message的常用方法
- Study-android 的handler和message学习
- android中简单的Handler与Message
- 【Android基础知识】Handler、Message、Looper的关系
- android runOnUiThread与handler message的区别
- Handler和Message的使用之一
- Handler和Message的使用之二
- Handler和Message的使用之三
- Handler和Message的使用之四
- Handler、Looper、Message、MessageQueue的使用
- 异步处理(Handler&Message)的使用
- rac安装时执行root.sh报错以后的清理
- 把应用程序移植到PowerLinux容易吗?
- PHP环境配置
- 享元模式c++代码实现
- flashplayer11+已导入JSON库
- android handler Message 的使用备忘录
- 背后黑暗
- QT实现界面跳转切换
- 常用AT指令
- 获取网站的根目录信息
- linux下的简易有道字典
- 截图工具 Snagit
- DIV的CSS height:100%无效的解决办法
- 黑马程序员----java基础加强(5)