`

Android中Thread,hanlder(HanlderThread),Runnable之间的关系

阅读更多
在多线程编程这块,我们经常要使用Handler,Thread和Runnable这三个类,那么他们之间的关系你是否弄清楚了呢?

    首先说明Android的CPU分配的最小单元是线程,Handler一般是在某个线程里创建的,因而Handler和Thread就是相互绑定的,一一对应。

    而Runnable是一个接口,Thread是Runnable的子类。所以说,他俩都算一个进程。

    HandlerThread顾名思义就是可以处理消息循环的线程,他是一个拥有Looper的线程,可以处理消息循环。

    与其说Handler和一个线程绑定,不如说Handler是和Looper一一对应的。

    最后需要说明的是,在UI线程(主线程)中:

    mHandler=new Handler();

    mHandler.post(new Runnable(){

    void run(){

       //执行代码...



     }

    });

    这个线程其实是在UI线程之内运行的,并没有新建线程。



    常见的新建线程的方法是:

    Thread thread = new Thread();

    thread.start();



    HandlerThread thread = new HandlerThread("string");

    thread.start();

分享到:
评论

相关推荐

    android NDK实现的Hanlder-消息队列-native多线程实例

    在Android开发中,NDK(Native Development Kit)允许开发者使用C和C++编写原生代码,从而提升性能和效率,特别是在处理密集计算或图形任务时。本实例关注的是如何在Android NDK环境下实现一个类似Java层的消息队列...

    安卓Android源码——android访问网络返回json解析和Hanlder的使用.zip

    其次,Handler是Android中处理线程间通信的重要机制,尤其在主线程与工作线程之间。主线程负责UI更新,而网络请求通常在后台线程进行。当网络请求完成,我们需要将结果传递回主线程更新UI,这就用到了Handler。...

    android Handler 示例

    在Android开发中,`Handler`是一个至关重要的组件,它用于处理线程间的通信,特别是主线程(UI线程)与工作线程之间的交互。`Handler`、`Looper`和`Message`是Android异步消息处理机制的核心组成部分。下面将详细...

    Hanlder、HandlerThread、AsyncTask处理机制的相关Demo代码

    在Android开发中,异步操作是必不可少的一部分,用于提升应用的性能和用户体验。`Handler`、`HandlerThread`和`AsyncTask`都是Android系统提供的处理异步任务的机制,它们各自有其特点和适用场景。下面我们将分别...

    Android Handler的作用与用法

    1.什么是handler? Handler是Android SDK来处理异步消息的核心类。...可以通过Handler将Message和Runnable对象发送到该Handler所关联线程的MessageQueue(消息队列)中,然后该消息队列一直在循环拿出一个Message,对其

    Android AsyncTask实现异步处理任务的方法详解

    Android提供了几种在其他线程中访问UI线程的方法,如Activity.runOnUiThread( Runnable )、View.post( Runnable )、View.postDelayed( Runnable, long )、Hanlder等。这些类或方法同样会使你的代码很复杂很难理解。...

    android高效加载Bitmap

    归纳总结: 1. 从缓存中读取图片:先从内存缓存中读取。 若是从内存中读取到的Bitmap为空,则在磁盘缓存中读取。 若是从磁盘中读取到的Bitmap为空,则从起始资源中读取 2....最后Hanlder更新UI

    详解Android中Handler的内部实现原理

    本文主要是对Handler和消息循环的实现原理进行源码分析,如果不熟悉Handler可以参见博文《详解Android中Handler的使用方法》,里面对Android为何以引入Handler机制以及如何使用Handler做了讲解。 概括来说,Handler...

    线程消息传送机制源码

    在Android开发中,线程和Handler消息传递机制是至关重要的组成部分,它们允许开发者在不同的线程间进行数据通信,特别是解决UI线程与后台线程的交互问题。本篇文章将深入探讨这一机制,重点关注Handler、Looper和...

    AsyncTask和Handler

    `Handler`是另一种在Android中实现异步通信的方式,主要用于在主线程和工作线程之间发送消息和处理事件。通过`Handler`,开发者可以将来自其他线程的消息传递给主线程,从而更新UI,或者从主线程向其他线程发送指令...

    卡顿监控(实现CPU信息部分而已,可按需扩展)

    利用MainLooper每次调用dispatchMessage前后都会利用Printer打印日志,如果dispatchMessage执行超时则卡顿出现,只需记录dispatchMessage执行时间超过一定时间则记录相关信息

    Android下载组件

    可多开启无数个线程,当下载任务超过已设置的线程多余的任务会等待,当有下载完成时会自动唤起等待的任务,用了hanlder发送消息(可以改成广播的形势),可邮件跟我交流技术哦(wikeryong@qq.com)

    TestHandlerThread:使用getMainLooper测试Hanlder

    使用getMainLooper / **在Apache许可版本2.0(“许可”)下许可的hanlder进行测试; 除非遵守许可,否则您不得使用此文件。 您可以在以下位置获得许可证的副本: http://www.apache.org/licenses/LICENSE-2.0 ...

    AsyncTask应用下载MP3

    `AsyncTask`是Android提供的一种轻量级的异步处理机制,它简化了在UI线程和后台线程之间进行数据交互的过程。本示例“AsyncTask应用下载MP3”就是演示如何利用`AsyncTask`来实现MP3文件的下载,并通过进度条动态展示...

    upload.zip

    Hanlder2.ashx表示从文件一个地方通过拆分流到另外一个地方,是断点续传的基本逻辑 Handler.ashx表示数据源,Handler3.ashx表示接收端,查看源代码可以知道。 后续还要做一个就是传输完成后的数据校验!

    amigo:Golang中的Asterisk AMI连接器

    API已在v0.1.2中更改。 请阅读godoc。 用法很简单。安装: go get github.com/ivahaev/amigo 使用将模块导入您的项目: import "github.com/ivahaev/amigo" 然后使用: package mainimport ("fmt""github....

    Python RabbitMQ消息队列实现rpc

    上个项目中用到了ActiveMQ,只是简单应用,安装完成后直接是用就可以了。由于新项目中一些硬件的限制,需要把消息队列换成RabbitMQ。 RabbitMQ中的几种模式和机制比ActiveMQ多多了,根据业务需要,使用RPC实现功能,...

    ie与firefox下的event使用说明与详细区别

    在Web开发中,事件处理是不可或缺的一部分,而`event`对象是事件处理中的核心元素,用于获取和操作事件的相关信息。然而,不同的浏览器对`event`对象的支持和使用方式存在差异,尤其是Internet Explorer (IE) 和 ...

    mail_handler:PyCon台湾邮件工具包

    步骤1:通过pipx安装pycontw-mail-handler(或在虚拟环境中安装) # Install pipxpython -m pip install pipx# Install pycontw-mail-hanlder through pipxpython -m pipx install pycontw-mail-handler 安装pycontw...

    kakoune-gdb:gdb集成插件

    将gdb.kak和gdb-output-hanlder.perl添加到您的自动加载目录中: ~/.config/kak/autoload/ ,或手动获取它。 这两个文件必须位于同一目录中,脚本才能工作。 您至少需要Kakoune v2019.01.20。 另外,此脚本对gdb ...

Global site tag (gtag.js) - Google Analytics