安卓基础之《(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、原理图

相关推荐
张风捷特烈2 小时前
状态管理大乱斗#02 | Bloc 源码全面评析
android·前端·flutter
untE EADO2 小时前
MySQL错误-this is incompatible with sql_mode=only_full_group_by完美解决方案
android·sql·mysql
诸神黄昏EX2 小时前
Android Google EDLA
android
常利兵3 小时前
从0到1,开启Android音视频开发之旅
android·音视频
2501_937145413 小时前
TV 影视大全:多品类聚合 稳定播放优化版
android·源码·源代码管理
followYouself4 小时前
Gradle、AGP、Plugin插件基本知识
android·gradle·plugin·agp
我命由我123454 小时前
Android 开发问题:Unresolved reference: kapt
android·java·java-ee·android studio·android jetpack·android-studio·android runtime
黄昏晓x4 小时前
数据库 ---- 表的约束
android·数据库
克里斯蒂亚诺更新4 小时前
Android Studio创建一个新项目
android·ide·android studio