安卓基础之《(29)—消息机制与异步任务》

一、线程概述

1、在android中,只有在ui Thread中才能直接更新界面

ui Thread又叫main Thread、主线程

2、在android中,长时间的工作(联网)都需要在workerThread中执行

workerThread又叫分线程、子线程

3、在分线程获得服务器数据后,需要立即到主线程去更新界面显示数据(切换到主线程)

4、如何实现线程间通信呢,用消息机制

二、消息机制

1、Message

(1)可理解为线程间通讯的数据单元,可通过Message携带需要的数据

(2)创建对象

Message.obtain(what)

(3)封装数据

2、Handler

(1)Handler是Message的处理器,同时也负责消息的发送和移除的工作

(2)发送即时消息:sendMessage(Message msg)

(3)发送延时消息:sendMessageDelayed(Message msg, long time)

这里延迟是延迟处理,处理时间=当前时间+延迟时间

(4)处理消息(回调方法):handleMessage(Message msg)

(5)移除还未处理的消息:removeMessages(int what)

3、MessageQueue

(1)消息队列,用来存放通过Handler发送的消息

(2)它是一个按照Message的when排序的优先级队列

4、Looper

(1)钩子,循环器

(2)负责循环取出MessageQueue里面的当前需要处理的Message

(3)交给对应的Handler进行处理

(4)处理完后,将Message缓存到消息池中(线程池),以备复用

5、原理图

相关推荐
一笑的小酒馆3 小时前
Android中WebRTC通信
android
KevinWang_6 小时前
Android Hilt 依赖注入
android
古法安卓6 小时前
Android-深入理解 Android 回调(Callback)机制
android·性能优化·android studio
古法安卓6 小时前
Android-车机 GNSS 定位数据接收问题排查
android·java·android studio
FungLeo8 小时前
Flutter 吸顶分组列表实战:语义桶分组 + 点击头平滑滚动
android·flutter
阿巴斯甜9 小时前
Android 自定义权限
android
FungLeo9 小时前
Flutter 超长 StatefulWidget 拆分术:part of + extension on State 实战
android·flutter·dart
小王C语言11 小时前
MySQL 数据类型:数值类型、字符串类型、日期和时间类型、enum 和 set、find_in_set 查询
android·数据库·mysql
我命由我1234511 小时前
Android 控件 - CardView(快速实现圆角)
android·java·java-ee·kotlin·android studio·android-studio·android runtime
码云数智-园园11 小时前
Android 全方位性能优化合集
android·性能优化