优点:

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使用相关推荐

  1. HandlerThread和IntentService源码解析

    简介 首先我们先来了解HandlerThread和IntentService是什么,以及为什么要将这两者放在一起分析. HandlerThread: HandlerThread 其实是Handler ...

  2. Handler消息机制(十):HandlerThread源码解析

    作为Android开发者都知道在子线程中使用Handler必须要创建Looper,其实HandlerThread就是在线程中封装了Looper的创建和循环,不用我们开发者自己去创建它,下面我们来看看源 ...

  3. 【Android 异步操作】HandlerThread 示例 ( 初始化并执行 | 获取Looper | 获取 Handler | 获取消息队列 | 设置空闲队列 | 代码示例 )

    文章目录 一.HandlerThread 初始化 二.HandlerThread 获取Looper 三.HandlerThread 获取消息队列 MessageQueue 四.HandlerThrea ...

  4. 【Android 异步操作】Handler 机制 ( Handler 常用用法 | HandlerThread 简介 | HandlerThread 源码注释分析 )

    文章目录 一.Handler 常用用法 二.HandlerThread 简介 三.HandlerThread 源码 一.Handler 常用用法 主线程 Handler 主要作用 : Looper 和 ...

  5. Handler-接受子线程数据更新UI主线程;非主线程通信--HandlerThread

    一.定义 主要接受子线程发送的数据, 并用此数据配合主线程更新UI.           解释: 当应用程序启动时,Android首先会开启一个主线程 (也就是UI线程) , 主线程为管理界面中的UI ...

  6. Java高并发编程:HandlerThread

    1. HandlerThread的使用 继承自Thread,在run()方法中,执行了Looper.prepare()和Looper.loop(),和handler结合使用,实现后台轮询线程功能 st ...

  7. 安卓开发之Handler、HandlerThread学习篇

    安卓开发之Handler.HandlerThread学习心得篇           开篇说明:本文采用的都是最基础最简单的例子,目的只有一个:希望大家将学习的焦点放在Handler的理解和使用上,我不 ...

  8. HandlerThread原理与应用

    HandlerThread  在理解了Handler的原理之后,我们知道在一个子线程中创建一个Handler不能缺少了Looper.prepare()和Looper.loop()两个方法,具体的原因这 ...

  9. HandlerThread 类的学习(转载)

    HandlerThread继承于Thread,所以它本质就是个Thread.HandlerThread类用于方便的创建一个含有looper的线程类,looper用来创建handler类.我们一般不创建 ...

  10. android service使用handle,android中对Looper、HandlerThread、IntentService的理解及使用方法...

    消息队列处理模型 容器保存事件,队列 涉及到角色: 类 功能 MessageQueue 存放消息 Looper 轮循消息队列,从中取出消息 Thread 处理消息 Message 消息 Handler ...

最新文章

  1. C#操作MySQL数据库的简单例子
  2. python爬取快代理IP并测试IP的可用性
  3. java常见_Java 常用类
  4. 在学术论文投稿时你遇到过最奇葩的审稿意见是什么?
  5. ks.cfg配置详解
  6. python写一个自动在网页搜索资源并下载的程序
  7. elasticsearch-carrot2插件打包
  8. selenium自动化测试之鼠标模拟操作
  9. DW制作小三角型教程
  10. android身高控件_android 测身高标准体重 示例源码
  11. 【程序人生】外包公司派遣到网易,上班地点网易大厦,转正后工资8k-10k,13薪,包三餐,值得去吗?
  12. KMeans算法的Mapreduce实现
  13. paperswithcode使用方法
  14. 使用ardunio制作神秘礼物(环境光传感器、舵机、LED、蜂鸣器)
  15. Tomcat - 解决which must be escaped when used within the value错误
  16. css零到一基础教程009:CSS HSL 颜色
  17. matlab 伯德图 横坐标步长_【龙腾原创】教您使用matlab画伯德图(看了你就学会了,比mathcad好用多了。谁用谁知道!)...
  18. 人为什么活着系列之十六:具体的人具体的环境具体分析
  19. 上班第一天总结(以装环境为主)
  20. 关于安装win8系统的一些心得(详细)

热门文章

  1. js获取访问IP、地区、、当前操作浏览器
  2. tensorflow 提示没有models库
  3. centos 安装tmux
  4. 关于html中对换行的处理
  5. JavaScript中一些常用的方法整理
  6. web.xml文件中的web-app元素 部署
  7. APM代码学习笔记1
  8. PHP指定字段的多维数组排序方法
  9. 没关系,因为你是好人呀
  10. A Game USACO 3.3 (DP阵亡)