Android 学习笔记 10 Hnadler
来源:互联网 发布:css和js区别 编辑:程序博客网 时间:2024/06/05 06:37
Day10 Handler
- Handler
Handler
线程之间发送消息
主线程不能执行耗时操作
子线程不能操作主线程UI视图
- Handler核心类
- Handler发送消息的两种方式
- 实例:主线程向子线程发送消息
Handler核心类
Message
:对发送消息的封装MessageQueue
:消息队列Looper
:可以循环读取消息(从MessageQueue中)Hnadler
:处理消息,同时也发送消息
谁接收消息,handler定义在谁的线程中
Handler发送消息的两种方式
- 使用 sendMessage(Message msg)方式
- 使用 post(Runnable r)方式
//使用sendMessage方式传递数据 Message msg=Message.obtain(); msg.obj; msg.arg1; msg.arg2; msg.what; msg.setData(Bundle bundle); sendMessage(Message msg); //在handler定义中通过重写handleMessage()方式直接接收并处理数据 handleMessage(Message msg);
//通过post方式传递任务 handler.post(new Runnable(){ @Override public void run() { //TODO } }); //任务提交给主线程后会由主线程去执行
主线程向子线程发送消息
==理解handler原理==
非常重要
private void sendMessage(View v){ //点击按钮给子线程发消息 Message msg=Message.obtain(); msg.obj="hello!"; handler.sendMessage(msg);//把Msg放入Handler内部的MessageQueue对象中,这个对象同时也是Looper中的MessageQueue //在Message类中有一个Hnadler 类型的Callback对象,当发送消息时,这个对象被赋值为发送的Hnadler } //创建子线程 class MyThread extends Thread{ @Override public void run() { //子线程中没有Looper对象 //需要先有Looper对象 Looper.prepare();//回去现成的本地变量中查找,如果有Looper,得到,否则new 一个Looper,并加入本地变量 //在Looper创建的同时创建并绑定了MessageQueue()(使用同一个消息队列) //实例化handler //同时实现与Looper的绑定 handler=new Handler();//如果直接实例化Hnadler,会出现RuntimeException,原因是子线程中没有Looper对象 //让Looper对象循环读取,当读到消息时会去掉用 msg.target.dispatchMessage(msg); Looper.loop(); } }
0 0
- Android 学习笔记 10 Hnadler
- android 之 Hnadler 、Message 、Looper
- Android的进程Hnadler与AsyncTask
- 84 Android Hnadler 封装下载图片工具类
- Android 异步加载网络图片到ImageView (Hnadler)
- Hnadler机制
- android学习笔记10
- Android学习笔记10
- Hnadler的基本使用
- android学习笔记10_19
- Android学习笔记10---Intent
- Android学习笔记--Gson笔记
- Android 学习笔记-2010年10月
- android学习笔记10:9Patch
- Android学习笔记10:TextView的使用
- Android 学习笔记 第五季 10 文件系统
- android学习笔记(10)service初步
- Android学习笔记(10).布局管理器
- elipse离线安装velocity插件
- 已经阻止此发布者在你的计算机上运行软件,您必须取消阻止该发布都才能运行此软件
- 浅析最近很火的react-native技术
- Myeclipse8.5启动tomcat控制台显示java.lang.OutOfMemoryError: Java heap space的解决
- Java并发编程:Callable、Future和FutureTask
- Android 学习笔记 10 Hnadler
- Linux信号机制学习笔记-----Linux信号机制的疑问?????
- Apache—DBUtils简介
- -l参数和-L参数
- 64位系统连接数据库:在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配的问题
- 在framework或子工程中使用xib
- Windows 2012 R2上搭建IIS管理用户的隔离模式FTP
- springmvc 和 mybatis 的相关配置
- mysql 学习---->字符串、数值处理、日期、查询的逻辑处理、系统相关内容查询、IP地址相关、密码