HandlerThread使用

HandlerThread使用优点 1 制作一个后台异步线程 需要的时候可以丢一个任务给它 使用灵活 2 可以避免项目中随处可见的 newThread start 增加系统开销 3 可以代替 Thread looper handlerd 的写法缺点 1 不要执行太耗时的任务 此种情况就用线程池吧 http blog csdn net android xue article details 6289

优点:

1.制作一个后台异步线程,需要的时候可以丢一个任务给它,使用灵活

2.可以避免项目中随处可见的new Thread().start(),增加系统开销

3.可以代替Thread+looper+handlerd的写法

缺点:

1.不要执行太耗时的任务(<= 100ms),如果太耗时可能会阻塞其他任务

(此种情况就用线程池吧:http://blog.csdn.net/android_xue/article/details/)

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; } //由于HandlerThreadrun方法是一个无限循环,  // 因此当明确不需要使用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(); } }


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233853.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Ubuntu pycharm创建快捷方式并固定至启动栏(两种方法)

    Ubuntu pycharm创建快捷方式并固定至启动栏(两种方法)Ubuntu20.04/18.04/16.04pycharm创建快捷方式并固定至启动栏

    2025年8月8日
    2
  • 知识库 平台_平台开发

    知识库 平台_平台开发入园这么些天了,今天搭建了一套知识库系统,使用效果还不错,分享一些过程经验。搭建准备:软件系统:WCP4.3免费版(免费开源,支持Windows,使用简单,有傻瓜式一键安装包-win平台)服务

    2022年8月4日
    6
  • document.getElementById详解

    document.getElementById详解注意:document.getElementById("")得到的是一个对象,用alert显示得到的是“object”,而不是具体的值,它有value和length等属性,加上.value得到的才是具体的值! 参考资料:1.document.getElementById的用法和DHTML.CHM的下载地址http://blog.sin…

    2022年7月15日
    17
  • 企业发卡网源码_多商户企业发卡网源码代对接功能搭建下载

    企业发卡网源码_多商户企业发卡网源码代对接功能搭建下载企业发卡网源码是相对于个人发卡网源码而言的,两者最大的区别是:前者适用于多用户虚拟自动售卡,后者适用于单个个体商户,这就相当于商城与单个店铺的区别。企业发卡网源码集成了一套复杂的管理系统,这其中包括:

    2022年7月1日
    39
  • echarts饼图labelLine颜色_旭日图怎么做

    echarts饼图labelLine颜色_旭日图怎么做前言如果你想要用较少的代码实现比较酷炫的数据统计表,echarts是值得你考虑的一种实现方式。官网提供了很多实例供参考。并且配置项手册很详细,几乎囊括了所有的绘图需求。但是再全的配置,偶尔也会有不满足需求的时候。最近在开发过程中就遇到了一个比较头疼的问题。先看下UI效果dy20180512171652810.jpg思路拿到需求,先看echarts的配置手册,很容易想到使用旭日图来做。但是还没等大致…

    2022年9月26日
    4
  • navicat 2021激活码【在线破解激活】

    navicat 2021激活码【在线破解激活】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号