今天我们一起来学习下一个Android中比较简单的类HandlerThread,虽然它的初始化有点小麻烦。

介绍

首先我们来看看为什么我们要使用HandlerThread?在我们的应用程序当中为了实现同时完成多个任务,所以我们会在应用程序当中创建多个线程。为了让多个线程之间能够方便的通信,我们会使用Handler实现线程间的通信。

下面我们看看如何在线程当中实例化Handler。在线程中实例化Handler我们需要保证线程当中包含Looper(注意UI-Thread默认包含Looper)。

为线程创建Looper的方法如下:在线程run()方法当中先调用Looper.prepare()初始化Looper,然后再run()方法最后调用Looper.loop(),这样我们就在该线程当中创建好Looper。(注意Looper.loop()方法默认是死循环)

我们实现Looper有没有更加简单的方法呢?当然有,这就是我们的HandlerThread。我们来看下AndroidHandlerThread的描述:

Handy class for starting a new thread that has a looper. The looper can then be used to create handler classes. Note that start() must still be called.


使用步骤

尽管HandlerThread的文档比较简单,但是它的使用并没有想象的那么easy。

  1. 创建一个HandlerThread,即创建了一个包含Looper的线程。

    HandlerThread handlerThread = new HandlerThread("leochin.com");

    handlerThread.start(); //创建HandlerThread后一定要记得start()

  2. 获取HandlerThread的Looper

    Looper looper = handlerThread.getLooper();

  3. 创建Handler,通过Looper初始化

    Handler handler = new Handler(looper);

通过以上三步我们就成功创建HandlerThread。通过handler发送消息,就会在子线程中执行。

如果想让HandlerThread退出,则需要调用handlerThread.quit();


测试代码

HandlerThreadDemo


引用:

Android HandlerThread 的使用及其Demo的更多相关文章

  1. Android HandlerThread 的使用及其Demo (转)

    转自http://www.cnblogs.com/hnrainll/p/3597246.html 介绍 首先我们来看看为什么我们要使用HandlerThread?在我们的应用程序当中为了实现同时完成多 ...

  2. Android HandlerThread详解

    概述 Android HandlerThread使用,自带Looper消息循环的快捷类. 详细 代码下载:http://www.demodashi.com/demo/10628.html 原文地址: ...

  3. I.MX6 Android backlight modify by C demo

    /************************************************************************** * I.MX6 Android backligh ...

  4. Android handler Thread 修改UI Demo

    /********************************************************************** * Android handler Thread 修改U ...

  5. Android HandlerThread 源码分析

    HandlerThread 简介: 我们知道Thread线程是一次性消费品,当Thread线程执行完一个耗时的任务之后,线程就会被自动销毁了.如果此时我又有一 个耗时任务需要执行,我们不得不重新创建线 ...

  6. Android HandlerThread 源代码分析

    HandlerThread 简单介绍: 我们知道Thread线程是一次性消费品,当Thread线程运行完一个耗时的任务之后.线程就会被自己主动销毁了.假设此时我又有一 个耗时任务须要运行,我们不得不又 ...

  7. Android -BLE蓝牙小DEMO

    代码地址如下:http://www.demodashi.com/demo/13890.html 原文地址: https://blog.csdn.net/vnanyesheshou/article/de ...

  8. Android HandlerThread分析

    基础概念:HandlerThread 是一个包含 Looper 的 Thread,我们可以直接使用这个 Looper 创建 Handler,本质上还是Thread Handler 必须要和 Loope ...

  9. Android微信分享功能实例+demo

    Android微信分享功能实例 1 微信开放平台注册 2 获得appId,添加到程序中,并运行程序 3 使用应用签名apk生成签名,添加到微信开放平台应用签名,完成注册 4 测试分享功能. 有问题请留 ...

随机推荐

  1. Checkpoint--与lazy writer区别

    checkpoint目的是减少数据库的恢复时间(服务奔溃或重启服务后的恢复),而lazy writer的目的是保证SQL OS 有空闲缓存块和系统有一定可用内存. Checkpoint和lazyWri ...

  2. [问题2014A01] 解答三(升阶法,由董麒麟同学提供)

    [问题2014A01] 解答三(升阶法,由董麒麟同学提供) 引入变量 \(y\),将 \(|A|\) 升阶,考虑如下行列式: \[|B|=\begin{vmatrix} 1 & x_1-a & ...

  3. 滚动RollUp、压缩

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  4. Spring 框架下Controller 返回结果在EasyUI显示

    这几天弄了一下java下的在后台返回数据到jsp页面上的显示: 总结一下: 首先后台方面: @RequestMapping(value="/searchByUserName") @ ...

  5. iOS - OC NSStream 文件流

    前言 @interface NSStream : NSObject @interface NSOutputStream : NSStream 1.文件流的使用 NSString *filePath = ...

  6. 20160824_CentOS6.4x64_关闭IPv6

    1.参考网址: http://blog.csdn.net/suplxj/article/details/7773423 2.我的操作: #cat <<EOF>>/etc/mod ...

  7. (35)odoo中widget

    widget大全: many2many_tagsone2many_listselectionprogressbarselectionstatusbarhandlemonetarymail_thread ...

  8. python编程技巧2

    模块化 ---- 这是我们程序员梦寐以求的,通过模块化可以避免重复的制造轮子. 同时 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块 ...

  9. linux hugepage

    The intent of this file is to give a brief summary of hugetlbpage support inthe Linux kernel.  This ...

  10. phpStudy

    『软件简介』 该 程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使 ...