Android 开发 —— Handler的使用
来源:互联网 发布:微信专用淘宝链接转换 编辑:程序博客网 时间:2024/06/07 23:27
转载自:http://blog.csdn.net/tangwing/article/details/7583669
最近通过看mars的视频学Android,下面是关于handler的一些笔记。
使用Handler创建一个Runnable任务并加入队列。
- 创建Handler对象和一个相应的Runnable对象
- 后者即为Java中常用的线程(Thread)中涉及到的Runnable
- 使用post(或postDelayed)方法将Runnable对象放入执行队列,注意这并不代表任务会马上得到执行的机会
- 通过在Runnable中postDelayed自身可以实现循环任务
- 使用handler.removeCallback取消已被post的任务
以上就是Handler最基本的用法了。需要极为注意的一点是,通过以上方法使用handler,即在当前Activity类中直接创建Runnable对象和Handler对象的话,实际上我们并没有创建新线程!Runnable所在的线程其实就是当前的Activity线程。这就相当于我们用Thread的时候在自己的类中实现Runnable接口并调用了this.start(),其实是同一线程。 所以一般在使用的时候我们可以这样:
HandlerThread ht=new HandlerThread("Thread name"); ht.start(); MyHandler mh=new MyHandler(ht.getLooper());
其中MyHandler继承了Handler,重写handlerMessage方法。这样我们的Handler就在新线程中了。可以用来在后台处理一些耗时的操作。
其实Handler的存在还有另一个意义,那就是处理Message。
每个Handler都属于创建它的那个ui线程,这一线程有一个相应的MessageQueue(再新建线程时不会另外创建队列,这一队列可用来做线程间和同一线程不同组件间的通信),使用Handler可以将一个Message加入到消息队列中,并定义收到此消息的处理方法(通过在定义Handler时重写handleMessage方法)。
- 得到Message对象:handler.obtainMessage。使用new Message()是不推荐的。
- 如果需要传递的信息较少可通过直接赋值给msg.arg1 arg2 和obj成员变量来传递,否则使用setData
- handler.sendMessage(msg)。
例子:http://www.jb51.net/article/43360.htm
0 0
- Android 开发 —— Handler的使用
- Android 开发 —— Handler的使用
- Android 开发笔记—— Handler的使用
- android开发Handler的使用
- Android开发历程_12(Handler的使用)
- Android开发之Handler的使用
- Android开发:Handler的使用(一)
- Android开发:Handler的使用(二)
- Android开发:Handler的使用(三)
- Android开发基础之Handler的使用
- android——Handler的使用
- android——Handler的使用
- android——Handler的使用
- handler——handler的使用例子
- Android开发(33) Android中有关handler的使用(一)
- Android开发——Handler引起的内存泄露
- android handler的使用
- Android Handler的使用
- android 系统定制的小技巧
- Chrome浏览器下jQuery无法取到图片的长和宽的解决方法
- Spring3.1前后 拦截器与Json转换的区别
- PHP POST过来的XML格式数据用什么接收
- 怎样选择Java测试框架 JUnit还是TestNG?
- Android 开发 —— Handler的使用
- strcpy和memcpy的区别
- SqlServer死锁检测
- 黑马程序员——————IO流(二)_File类、其他流
- iOS-Core-Animation之七----隐式动画
- 设计模式--开闭原则
- 【jQwidgets】dragdrop 修改版
- 利用java将已设置好的文本进行修改
- 撒的撒的撒的