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


相关推荐

  • 进销存excel_用Excel制作简单的进销存系统「建议收藏」

    进销存excel_用Excel制作简单的进销存系统「建议收藏」最近刚好帮一个朋友做一个进销存系统,因为使用者对电脑操作以及Excel应用能力较弱,我做的进销存系统没有用特别复杂的功能,非常有解决意义,我将手把手将你制作一个简单的进销存系统。需求描述朋友找人合伙开了一个女装店,想要用Excel记录每天的销售数据、定期的进货数据,以及定期盘点库存情况。朋友的合伙人对电脑操作、Excel数据管理能力较弱,前期购买过专用的进销存软件,但是经常会把数据搞乱,因此放弃了…

    2022年5月31日
    55
  • dreamweaver添加表单_dreamweaver网页制作代码

    dreamweaver添加表单_dreamweaver网页制作代码表格创建列表单元格的合并一、创建列表1,表格标签2,表格的基本结构3,表格的属性1、表格标签table:用来定义表格,整个表格包含在table里,成对出现;tr:用来定义表格中的行,成对出现;td:表格的列标记,也是表格的单元格,成对出现;th:表头元素(特征加粗,居中);caption:表格的标题标签,好处,标题是定义在表格内部的,跟随表格移动。2、表格的基本结构<table> <tr> <th></th> &

    2022年8月11日
    10
  • 国内十大正规现货交易平台排名(2022最新榜单)「建议收藏」

    国内十大正规现货交易平台排名(2022最新榜单)「建议收藏」如今,越来越多的人投资于黄金,因为这些投资项目更适合当今年轻人的需求,但为了通过黄金投资获得理想的回报,我们首先需要选择一个可靠的国内黄金交易平台,由于市场上的各种平台都很复杂,有些平台可能不是很正规。如果你选择这样的一个平台投资,收获可能会并不理想,但选择好的平台事实上并不像预期的那么困难。香港作为全球的金融中心之一,其金银业贸易场的黄金投资业务已经很成熟,投资者的利益能够得到有效的保障。鉴于很多新手对国内现货黄金平台不太了解,下面小编为大家介绍“国内十大正规现货交易平台排名(2022最新

    2022年6月29日
    270
  • Linux下route命令用法

    Linux下route命令用法显示现在所有路由#routeroot@ubuntu:~#routeKernelIProutingtableDestination  Gateway    Genmask    FlagsMetricRef  UseIface10.147.9.0   *       255.255.255.0 U  1

    2022年7月18日
    15
  • matlab用插值法plot,Matlab插值法

    matlab用插值法plot,Matlab插值法实验目的:1.Matlab中多项式的表示及多项式运算2.用Matlab实现拉格朗日及牛顿插值法3.用多项式插值法拟合数据实验要求:1.掌握多项式的表示和运算2.拉格朗日插值法的实现(参见吕同富版教材)3.牛顿插值法的实现(参见吕同富版教材)实验内容:1.多项式的表达式和创建;多项式的四则运算、导数与积分。2.用Matlab实现拉格朗日及牛顿插值法。3.用多项式插值法拟合数据。实验步骤:1.多项式的…

    2022年6月4日
    36
  • 划重点!关于缓冲区溢出攻击,这份防范策略一定要收好!

    划重点!关于缓冲区溢出攻击,这份防范策略一定要收好!一、缓冲区溢出攻击的基本概念缓冲区溢出是一种非常普遍、非常危险的漏洞,在各种操作系统、应用软件中广泛存在。利用缓冲区溢出攻击,可以导致程序运行失败、系统宕机、重新启动等后果。更为严重的是,可以利用它

    2022年6月30日
    32

发表回复

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

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