最近在使用handler的时候发现一个容易犯的错误,研究了一天才搞好。
handler使用方法简介:
Handler mHandler;
1 定义handler,并实现handlerMessage()方法,用来处理后台线程发过来的消息。
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//需要在主线程里面处理的内容
super.handleMessage(msg);
}
};
2 在后台线程(或者叫非UI控制线程的主线程)中,做完某一件事情,调用mHandler.sendMessage告诉主线程:
参数Message可以自己增加需要携带的内容,也可以new一个空的Message。
new Thread(new Runnable() {
@Override
public void run() {
Message msg = new Message();
mHandler.sendMessage(msg);
}
}, "subThread").start();
子线程sendMessage以后,主线程的handleMessage方法就可以收到通知并修改ui。
3 我因为对Handler.post方法理解不到位,犯了一个错误:
在子线程启动时用了mHandler.post(new Runnable(){...},导致子线程运行时占用了主线程的执行时间,没有实现需要的功能。
post方法说明如下:
Causes the Runnable r to be added to the message queue. The runnable will be run on the thread to which this handler is attached.
分享到:
相关推荐
Android的Handler使用方法总结,不错的文档,跟大家分享分享
android Handler的使用,我也刚开始学习,从别处下载了给大家分享
Android Handler传值的,简单的介绍了Handler的用法
Android Handler类详解 Android Handler类详解 Android Handler类详解 Android Handler类详解
Android中handler的使用,处理多线程的使用
android demo,使用Handler的postDelay,Runnable run实现延时3秒的splash。
Android Handler Looper
android handler的一些测试,套用他人的代码做的一些测试,多个线程sendmessage,该由那个handler处理?
1.handler是什么? 2.handler怎么用? 3.为什么要用handler?
android handler runnable使用实例(关键是内部run中停止)
android的多线程消息处理机制核心成员handler,基本用法很简单,相关资料也很多。本例子给大家带来handler的奇葩用法,与大家一起分享。
NULL 博文链接:https://dingran.iteye.com/blog/1930178
而Handler永远都是在UI主线程,这就意味着对一个控件的修改永远只会有一个线程,不会存在多个线程同时修改一个控件。二是方便统一管理,通过Handler可以统一进行对UI的管理,因为Handler采用消息处理的机制。就是另...
一个Android handler机制的Demo
android 中Handler 的几种写法,很简单的demo,大神简单修改下,用的是Handler.Callback,的方法
在主线程即UI线程外,新建一个Looper线程,并用Messenger和Handler来处理message和posted runnable。程序中,在负线程中默认加了一个3s的线程等来,来帮助理解sent message和post runnable之间的同步机制。所以在按...
Android Handler详细解析,讲解Handler之间的通讯,叫你如果用Handler完成异步线程对 UI的更新
【Android开发入门】Android线程之Handler
android demo,使用Runnable和Handler的特性实现每个3s的定时器
本资源是自己文章的demo的代码,以及android 系统部分的源代码