Android多线程—HandlerThread解析

时间:2022-04-02 00:20:00

一、HandlerThread作用

  1、实现多线程:在工作线程之后执行任务(比如一些耗时任务)

  2、异步通信、消息传递:实现工作线程与主线程(UI线程)之间的通信,即将工作线程的执行结果传递给主线程,从而在主线程中执行相关的UI操作,以保证线程的安全及UI主线程的流畅。

二、内部工作原理

内部原理 = Thread类 + Handler类

  继承Thread类:快速地创建1个带有Looper对象的新工作线程

  封装Handler类:快速创建Handler,并与其它线程进行通信

三、使用步骤

第一步:创建HandlerThread实例,传入线程名字,用于标记该线程

Android多线程—HandlerThread解析

第二步:启动线程

Android多线程—HandlerThread解析

第三步:创建工作线程Handler并重写handlerMessage()方法,目的:关联HandlerThread的Looper对象,实现消息处理操作,并与其他线程通信,

Android多线程—HandlerThread解析

第四步:使用工作线程Handler向工作线程的消息队列发送消息,在工作线程中,当消息循环时取出对应消息并在工作线程中执行相关操作

Android多线程—HandlerThread解析

第五步:结束线程

Android多线程—HandlerThread解析

第六步:代码整体

Android多线程—HandlerThread解析

Android多线程—HandlerThread解析的更多相关文章

  1. Android多线程全面解析:IntentService用法&源码

    前言 多线程的应用在Android开发中是非常常见的,常用方法主要有: 继承Thread类 实现Runnable接口 AsyncTask Handler HandlerThread IntentSer ...

  2. android多线程-AsyncTask之工作原理深入解析(下)

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  3. android多线程-AsyncTask之工作原理深入解析(上)

    关联文章: Android 多线程之HandlerThread 完全详解 Android 多线程之IntentService 完全详解 android多线程-AsyncTask之工作原理深入解析(上) ...

  4. android 多线程

    本章讲述在android开发中,多线程的应用.多线程能够处理耗时的操作并优化程序的性能.本章主要介绍知识点,AsyncTask,Java线程池,ThreadPoolExecutor线程池类.本章案例只 ...

  5. Android多线程分析之四:MessageQueue的实现

    Android多线程分析之四:MessageQueue的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前面两篇文章<Androi ...

  6. Android多线程分析之三:Handler,Looper的实现

    Android多线程分析之三:Handler,Looper的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处 在前文<Android多 ...

  7. Android多线程分析之二:Thread的实现

    Android多线程分析之二:Thread的实现 罗朝辉 (http://www.cnblogs.com/kesalin/) CC 许可,转载请注明出处   在前文<Android多线程分析之一 ...

  8. Android IntentService完全解析 当Service遇到Handler

    一 概述 大家都清楚,在Android的开发中,凡是遇到耗时的操作尽可能的会交给Service去做,比如我们上传多张图,上传的过程用户可能将应用置于后台,然后干别的去了,我们的Activity就很可能 ...

  9. android&colon; 多线程编程基础

    9.1   服务是什么 服务(Service)是 Android 中实现程序后台运行的解决方案,它非常适合用于去执行那 些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使 ...

随机推荐

  1. jQuery最基础最全面的选择器大览

    一.基本选择器     1.标签选择器 (element):根据给定的标签名匹配元素 eg:$("h2")选取所有h2元素 --- 返回元素集合 2.类选择器 (.class):根 ...

  2. 循序渐进Python3(十)-- 4 -- paramiko

    paramiko模块,基于SSH用于连接远程服务器并执行相关操作. 使用 (1)SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: , ))transport.connect( ...

  3. CUICatalog&colon; Invalid asset name supplied&colon; &lpar;null&rpar; &lowbar;configureCellForDisplay&colon;forIndexPath

    1.CUICatalog: Invalid asset name supplied: (null) 如果连续出现几个这样的错误,表示UIImageView为空 那么就需要检查UIImageView是否 ...

  4. 解决jquery-easyui1&period;3&period;3 combobox 多选模式不兼容IE8问题

    扩展Array的原型对象,加入indexOf方法 if(!Array.prototype.indexOf){    Array.prototype.indexOf = function(target) ...

  5. &lbrack;转&rsqb;jBoss事务控制

    转自:http://blog.csdn.net/trendgrucee/article/details/8545512   一.基础知识 1.JTA,即Java Transaction API,译为J ...

  6. swift-08-元组分解和数组

    //1.有时候需要把元组中的数据拆分出来使用比如: var stu = ("范冰冰",30,"女") // 1)将stu中的数据赋值给三个变量. var (na ...

  7. JavaScript高级程序设计42&period;pdf

    IE中的事件对象 要访问IE中的event对象有几种不同的方式,取决于指定事件处理程序的方法.在使用DOM0级方法添加事件处理程序时,event对象作为window对象的一个属性存在 wondow.e ...

  8. 一行代码实现C&num;的四舍五入

    C# 使用的是”四舍六入五成双”的银行家算法: 1 2 Math.Round(2.5); // 2 Math.Round(1.5); // 2 由此可见,1.5的Round符合我们的四舍五入,于是Ha ...

  9. Mysql CPU占用高的问题解决方法小结

    通过以前对mysql的操作经验,先将mysql的配置问题排除了,查看msyql是否运行正常,通过查看mysql data目录里面的*.err文件(将扩展名改为.txt)记事本查看即可.如果过大不建议用 ...

  10. C&num; 数组,对象实例化并赋值

    [数组] 数组实例化,并赋值时,可以省略new[]. ]; --未赋值 ,}; --赋值 [对象] 对象实例化,并赋值时,可以省略(). class test { public string name ...