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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 大数据分析应用的机遇与挑战「建议收藏」

    大数据分析应用的机遇与挑战「建议收藏」随着信息技能的发展,互联网家当的进步,计算机数据处理能力的快速增长,电子商务的日新月异及各种社交媒体的传播扩散,各种信息无时无刻不在影响着我们的生活。我们每时每刻都在自觉或者不自觉得与数据打交道,成为数据的记录者与传播者。海量数据的处理,以及如何利用大数据营销,给我们提出了更多的挑战。在这个人人都高喊“大数据时代”的今天,数据似乎被提到一个前所未有的高度。无论是个人还是企业,无论是网络营销还是线…

    2022年5月15日
    40
  • caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)「建议收藏」

    caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)「建议收藏」caioj 1079 动态规划入门(非常规DP3:钓鱼)(动规中的坑)

    2022年4月20日
    42
  • 谷歌地图 离线地图_地图谷歌高清手机版

    谷歌地图 离线地图_地图谷歌高清手机版离线地图解决方案,除了买地图数据,使用专业的ArcGIS来做外,也可以使用GMap.Net来做。关于GMap的开发教程,可以看我以前的文章:基于GMap.Net的地图解决方案使用了GMap一年了,也有了一些积累,开发了一个可以下载ArcGIS、百度、谷歌、高德、腾讯SOSO、天地图、Here等地图的地图下载器。百度和google地图加载显示如下:百度普通地图:百度混合地图:…

    2022年9月20日
    4
  • 俞敏洪是新东方_新东方创始人是谁

    俞敏洪是新东方_新东方创始人是谁一年前,不用考虑省略号后的故事,那是个不可能的假设。作为教育培训机构,新东方带有比一般企业更为浓烈的创始人气质。俞敏洪就是新东方,他的儒雅风度、人文情怀、幽默口才,卡内基式奋斗经历,都成为公司的标签。特别是另外两位同样富有个性魅力的创始人徐小平和王强离开后,俞更没有理由拒绝扮演这

    2025年11月2日
    6
  • php 7.2 安装 mcrypt 扩展

    php 7.2 安装 mcrypt 扩展

    2021年10月29日
    45
  • bat批处理命令大全_文件批处理命令

    bat批处理命令大全_文件批处理命令批处理文件(batchfile)包含一系列DOS命令,通常用于自动执行重复性任务。用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单,但难点在于确保一切按顺序执行。编写严谨的批处理文件可以极大程度地节省时间,在应对重复性工作时尤其有效在Windows中善用批处理可以简化很多重复工作批处理? 批处理(Batch),也称为批处理脚本。顾名思义,批处理就是对某对象进行批量的处理。批处理文件的扩展名为bat 目前比较常见的批处理包含两类: DOS批

    2022年8月22日
    7

发表回复

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

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