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


相关推荐

  • android原生系统怎么下载地址,安卓全机型原生官方ROM下载地址

    android原生系统怎么下载地址,安卓全机型原生官方ROM下载地址还是如题,都是安卓原生原官方下载地址,其实很多都可以百度搜的,然而你们就喜欢用别人转的,里面要是加点佐料很高兴?我这都是官方地址,不自己转,只给地址,自己下去,有些访问比较慢,下载速度有些也慢,因为大部分是国外地址,但是关键是干净纯洁啊!每个ROM支持的机型都不同,自己找把,Z2在这些ROM里都是叫ZUKZ2plus,或者是lenovoZ2plus,或者Z2plus,别跟PRO搞混,不能混刷,…

    2022年6月19日
    45
  • android acitivity 跳转到fragment,android Activity跳转到指定的Fragment

    android acitivity 跳转到fragment,android Activity跳转到指定的Fragment在要跳转的activity中的按钮写://一、先跳转到主MyActivityFragment,通过传递参数让他接受caseR.id.grxxbut:Intentshow=newIntent(GrXxActivity.this,MyActivityFragment.class);show.putExtra(“grxx”,1);startActivity(show);finish();break…

    2022年5月21日
    54
  • SDN介绍(什么是SDN)

    SDN介绍(什么是SDN)SDN 介绍一 什么是 SDN 二 SDN 解决什么问题 三 传统网络概念和结构体系传统网络数据控制与转发 传统网络架构 四 SDN 概述 SDN SoftwareDefi 软件定义网络 SDN 的分类五 SDN 网络架构 SDN 网络体系架构的三层模型 SDN 网络部署方式六 SDN 的价值网络业务快速创新 简化网络 网络设备白牌化 业务自动化 网络路径流量优化 一 什么是 SDN SD

    2025年6月29日
    1
  • PyAudio库简介「建议收藏」

    PyAudio库简介「建议收藏」python实时音频音频流播放参考

    2025年6月8日
    3
  • putty 与winscp 区别

    putty 与winscp 区别

    2021年10月8日
    50
  • php构建webservice,php webservice实例(简单易懂)「建议收藏」

    php构建webservice,php webservice实例(简单易懂)「建议收藏」phpwebservice实例(简单易懂)首先大家要简单了解了何谓webservice,接下来就做两个非常简单的例子,webservice还是逃不开server端与client端。我测试的环境为:apache2.2.11php5.2.10做这个测试之前,要确认你的php配置文件中已经将soap扩展打开,即extension=php_soap.dll;OK现在我们来体验webservice//…

    2022年7月21日
    17

发表回复

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

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