zoukankan      html  css  js  c++  java
  • HandlerThread 类的学习(转载)

    HandlerThread继承于Thread,所以它本质就是个Thread。HandlerThread类用于方便的创建一个含有looper的线程类,looper用来创建handler类。我们一般不创建looper对象,直接调用HandlerThread即可。HandlerThread本身实现了循环处理消息的功能,不用再直接调用Looper.prepare()和Looper.loop()方法。与普通Thread的差别就在于,它有个Looper成员变量。这个Looper其实就是对消息队列以及队列处理逻辑的封装,简单说就是消息队列+消息循环。

    使用HandlerThread步骤如下:

    //步骤1:创新HandlerThread的一个对象,并开启这个线程,HandlerThread将通过Looper来处理Handler对来中的消息,也就是如果发现Handler中有消息,将在HandlerThread这个线程中进行处理。

    HandlerThread ht = new HandlerThread(“hander_thread”);

    //步骤2:启动handerhandler这个线程;

    ht.start();

    //步骤3:创建handler中,带上Looper的参数,即handlerThread.getLooper()。注意,此处理必须在HandlerThread启动后才能调用,否则会报 ,getLooper()会返回null,则程序异常出错

    Handler handler = new Handler(ht.getLooper()){

    ….

    public void handleMessage(Message msg){

    … …    /*这里的处理,将不在主线程中执行,而在HandlerThread线程中执行,可以通过Thread.currentThread().getId()或者Thread.currentThread().getName()来确定*/

    }

    };

    常用方法:

    • public Looper getLooper()这个方法返回与此线程相关的Looper。如果该线程不能启动或是由于某种原因isAlive()方法返回false,则这个方法返回null,假如这个线程已经启动,那么此方法将阻塞,直到looper被初始化。
    • public int getThreadId():返回线程的标志。
     
  • 相关阅读:
    个人工作总结(2)
    个人工作总结(1)
    学习进度条
    学习进度条
    返回一个二维整数数组中最大联通子数组的和
    学习进度条
    构建之法阅读笔记02
    STM32F4寄存器初始化:PWM输出
    STM32F4跳转函数
    STM32F4寄存器串口DMA汇总
  • 原文地址:https://www.cnblogs.com/porter/p/3142454.html
Copyright © 2011-2022 走看看