HandlerThread 继承自Thread,内部封装了Looper
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Handler.Callback;
import android.os.HandlerThread;
import android.os.Message;
public class MainActivity extends Activity {
HandlerThread handlerThread = new HandlerThread("test");
Handler handler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("cur_id="+Thread.currentThread().getId());
handlerThread.start();
System.out.println("handlerThread.id=" + handlerThread.getId());
//post(runnable),只是直接运行了run(),run()内ThreadId与UIThread是一样的
// handler = new Handler();
//post(runnable),将runnable运行在handlerThread中,这是非UIThread的
handler = new Handler(handlerThread.getLooper(), new Callback() {
@Override
public boolean handleMessage(Message msg) {
System.out.println("receive message.whatA=" + msg.what);
if (msg.what == 1) {
return true;//不再向外层传递
} else {
return false; //外层的handleMessage() 继续执行
}
}
}) {
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
System.out.println("receive message.whatB=" + msg.what);
}
};
handler.post(new Runnable() {
@Override
public void run() {
System.out.println("handler_post_cur_id="+Thread.currentThread().getId());
handler.sendEmptyMessage(1);
handler.sendEmptyMessage(2);
}
});
}
}
运行结果:
01-23 07:12:31.590: I/System.out(12386): cur_id=1
01-23 07:12:31.590: I/System.out(12386): handlerThread.id=1866
01-23 07:12:31.590: I/System.out(12386): handler_post_cur_id=1866
01-23 07:12:31.600: I/System.out(12386): receive message.whatA=1
01-23 07:12:31.600: I/System.out(12386): receive message.whatA=2
01-23 07:12:31.600: I/System.out(12386): receive message.whatB=2
分享到:
相关推荐
android HandlerThread 实例,介绍HandlerThread的实现方法。HandlerThread使用很方便,主要用于需要常驻在程序的线程。
详见http://blog.csdn.net/huaxun66/article/details/52842118
主要为大家详细介绍了Android HandlerThread的使用及原理,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
通过一个demo说明HandlerThread 的使用
关联篇:深入Android的消息机制源码详解-Handler,MessageQueue与Looper关系 关联篇:Handler内存泄漏及其解决方案 本篇我们将来给大家介绍HandlerThread这个类,以前我们在使用线程执行一个耗时任务时总会new一个...
主要介绍了Android HandlerThread使用方法详解的相关资料,通过本文希望能帮助到大家,让大家掌握理解这部分内容,需要的朋友可以参考下
Android HandlerThread 完全解析 Android IntentService完全解析 当Service遇到Handler 详细 Android 高清加载巨图方案 拒绝压缩图片 ViewDragHelper实战 自己打造Drawerlayout Android UI性能优化实
HandlerThread 简介: 我们知道Thread线程是一次性消费品,当Thread线程执行完一个耗时的任务之后,线程就会被自动销毁了。如果此时我又有一 个耗时任务需要执行,我们不得不重新创建线程去执行该耗时任务。然而,...
一、HandlerThread的介绍及使用举例 HandlerThread是什么鬼?其本质就是一个线程,但是HandlerThread在启动的时候会帮我们准备好一个Looper,并供外界使用,说白了就是使我们在子线程中更方便的使用Handler,比如...
分析Android HandlerThread的一个小Demo
HandlerThread的使用与自定义HandlerThread 使用过程中常见的问题,以及为什么要使用
HandlerThread handlerThread = new HandlerThread("handler_thread"); //在使用HandlerThread的getLooper()方法之前,必须先调用该类的start()方法,否则获得的值为空值; handlerThread.start(); //创建...
kotlin fastjson HandlerThread 自定义注解 实现的网络请求库
自己使用资源; 自己理解:1、给线程传参数;2、可处理多线程
有关于Handler、HandlerThread、AsyncTask消息处理机制的相关Demo代码
Android线程,线程池,AsyncTask,HandlerThread和IntentService的用法demo