HandlerThread使用
优点:
1.制作一个后台异步线程,需要的时候可以丢一个任务给它,使用灵活
2.可以避免项目中随处可见的new Thread().start(),增加系统开销
3.可以代替Thread+looper+handlerd的写法
缺点:
1.不要执行太耗时的任务(<= 100ms),如果太耗时可能会阻塞其他任务
(此种情况就用线程池吧:http://blog.csdn.net/android_xue/article/details/62896433)
2.要自己控制好合适的生命周期,启动和结束都要自己控制
public class HandlerThreadUtil {private static HandlerThread mHandlerThread;private static Looper mLooper;public static Handler initHandlerThread(String threadName) {mHandlerThread = new HandlerThread(threadName);//一定要手动开启 mHandlerThread.start();//获取Looper mLooper = mHandlerThread.getLooper();if (mLooper != null) {//返回当前线程的Handler return new Handler(mLooper);}return null;}//由于HandlerThread的run方法是一个无限循环, // 因此当明确不需要使用HandlerThread // 的时候,应该终止线程执行 public static void cancle() {mLooper.quit();} }
public class MainActivity extends AppCompatActivity {public static final int TV = 0;private Handler mCallBackHandler;private TextView tv;private Handler mHanlder = new Handler() {@Override public void handleMessage(Message msg) {switch (msg.what) {case TV:tv.setText("修改好了......");break;}}};@Override protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) findViewById(R.id.tv);//获取HandlerThread实例 mCallBackHandler = HandlerThreadUtil.initHandlerThread("firstThread");//外界需要通过Handler的消息方式通知HandlerThread执行一个具体任务 mCallBackHandler.post(new myRunnable());}class myRunnable implements Runnable {@Override public void run() {try {Thread.sleep(3000);Message message = Message.obtain();message.what = TV;mHanlder.sendMessage(message);} catch (InterruptedException e) {e.printStackTrace();}}}@Override protected void onDestroy() {super.onDestroy();//手动结束线程 HandlerThreadUtil.cancle();} }
HandlerThread使用相关推荐
- HandlerThread和IntentService源码解析
简介 首先我们先来了解HandlerThread和IntentService是什么,以及为什么要将这两者放在一起分析. HandlerThread: HandlerThread 其实是Handler ...
- Handler消息机制(十):HandlerThread源码解析
作为Android开发者都知道在子线程中使用Handler必须要创建Looper,其实HandlerThread就是在线程中封装了Looper的创建和循环,不用我们开发者自己去创建它,下面我们来看看源 ...
- 【Android 异步操作】HandlerThread 示例 ( 初始化并执行 | 获取Looper | 获取 Handler | 获取消息队列 | 设置空闲队列 | 代码示例 )
文章目录 一.HandlerThread 初始化 二.HandlerThread 获取Looper 三.HandlerThread 获取消息队列 MessageQueue 四.HandlerThrea ...
- 【Android 异步操作】Handler 机制 ( Handler 常用用法 | HandlerThread 简介 | HandlerThread 源码注释分析 )
文章目录 一.Handler 常用用法 二.HandlerThread 简介 三.HandlerThread 源码 一.Handler 常用用法 主线程 Handler 主要作用 : Looper 和 ...
- Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread
一.定义 主要接受子线程发送的数据, 并用此数据配合主线程更新UI. 解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI ...
- Java高并发编程:HandlerThread
1. HandlerThread的使用 继承自Thread,在run()方法中,执行了Looper.prepare()和Looper.loop(),和handler结合使用,实现后台轮询线程功能 st ...
- 安卓开发之Handler、HandlerThread学习篇
安卓开发之Handler.HandlerThread学习心得篇 开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...
- HandlerThread原理与应用
HandlerThread 在理解了Handler的原理之后,我们知道在一个子线程中创建一个Handler不能缺少了Looper.prepare()和Looper.loop()两个方法,具体的原因这 ...
- HandlerThread 类的学习(转载)
HandlerThread继承于Thread,所以它本质就是个Thread.HandlerThread类用于方便的创建一个含有looper的线程类,looper用来创建handler类.我们一般不创建 ...
- android service使用handle,android中对Looper、HandlerThread、IntentService的理解及使用方法...
消息队列处理模型 容器保存事件,队列 涉及到角色: 类 功能 MessageQueue 存放消息 Looper 轮循消息队列,从中取出消息 Thread 处理消息 Message 消息 Handler ...
最新文章
- C#操作MySQL数据库的简单例子
- python爬取快代理IP并测试IP的可用性
- java常见_Java 常用类
- 在学术论文投稿时你遇到过最奇葩的审稿意见是什么?
- ks.cfg配置详解
- python写一个自动在网页搜索资源并下载的程序
- elasticsearch-carrot2插件打包
- selenium自动化测试之鼠标模拟操作
- DW制作小三角型教程
- android身高控件_android 测身高标准体重 示例源码
- 【程序人生】外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?
- KMeans算法的Mapreduce实现
- paperswithcode使用方法
- 使用ardunio制作神秘礼物(环境光传感器、舵机、LED、蜂鸣器)
- Tomcat - 解决which must be escaped when used within the value错误
- css零到一基础教程009:CSS HSL 颜色
- matlab 伯德图 横坐标步长_【龙腾原创】教您使用matlab画伯德图(看了你就学会了,比mathcad好用多了。谁用谁知道!)...
- 人为什么活着系列之十六:具体的人具体的环境具体分析
- 上班第一天总结(以装环境为主)
- 关于安装win8系统的一些心得(详细)