抖音短视频系统开发,消息机制的原理细节处理

app软件
0 1023


对于Android抖音短视频系统开发来说,BinderHandler是两大利剑,分别实现了进程间和线程间的通讯。Android的消息机制,主要包括Hander,Looper,MessageMessageQueue四个数据类型,但从概念上讲,核心是线程和消息队列,一切操作围绕某个线程和它对应的消息队列展开,抖音短视频系统开发常用Handler,Looper,MessageQueue这三个类都会和同一个线程绑定。主要原理为通过Threadlocal让每个线程具备了一个消息队列,消息队列一方面作为存储消息的数据结构,另一方面负责消息具体的入列,出列,阻塞等核心操作;而Handler负责将消息发送到相应线程的消息队列中,并对出列的消息进行处理;而Looper则通过循环,不断的尝试获取消息并对获取到的消息进行分发,交给消息对应的target(Handler)来处理,然后在消息处理完毕后进行回收,回收到消息池中。

短视频1~1.jpg

 

所以通过消息机制,可以实现线程间的通信,进行数据的传递;也可以作为线程间通信的协议,让一个线程通知另一个线程执行某段业务逻辑。同时,也可以实现线程切换,执行延迟,循环执行的操作。

 

这四个数据类型中,抖音短视频系统开发接触最多的是Hander Handler是消息机制中我们接触最多的类,可以理解为消息机制的调度器。它会和某个线程及相应的消息队列绑定在一起,负责向这个线程的消息队列里发送消息,并对出列的消息进行处理。和哪个线程绑定在一起,就会向哪个线程的消息队列里发送消息,同时处理消息的代码也就在哪个线程里执行,但是可以从其他任意一个线程向该线程发送消息。

短视频2~1.jpg


抖音短视频系统开发Android的消息机制,从概念上来讲,核心是围绕消息队列展开的。通过ThreadLocal,让每个Thread具备一个消息队列,然后才展开对消息队列相关的操作处理。而源码中,消息队列是通过Looper来添加的。

 

Message,消息,它的作用可以从两方面来理解,一方面可以理解为携带任意数据信息的对象,在线程建进行数据/消息传递;另一方面,可以理解为线程间通信的协议,将协议的关键信息封装到Message对象中,另外一个Thread接收到了之后进行解析,然后执行相应的业务逻辑。

 短视频3~1.jpg

 接下来,我们涉及到了消息机制的核心消息队列MessageQueueMessageQueue虽然翻译过来是队列,但数据结构是单链表,mMessages作为头元素,Messagenext为下一个指针。它负责完成消息机制的核心操作,包括消息入列,出列,删除消息,是否包含某个消息以及退出等。


除此之外,  抖音短视频系统开发MessageQueue内部还有上面这几个函数,用于判断是否包含某个消息,以及删除消息,实现比较简单。

声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任


精选帖子
Android 可可影视 v3.3.6无广告纯净版 3061
Android QQ音乐 v11.3.7 定制版解锁免费听歌无广告版 3634
Android 草图大师SKP v1.5 解锁会员版 9001
Android OmoFun追漫神器 v4.2.1 无广告绿色版 6036
AdobeGenP Adobe全家桶系列激活工具 v3.5.0/3.4.14.1 绿色版 6617
Android 七猫免费听书 v1.4 解锁高级版 5031
超良心的抢票神器——Bypass1.16 4764
Android 玲珑加速器 v6.10.9.40 解锁无限时间 3415
Android 大师兄影视 v3.3.8 去广告会员版 2534
热门帖子
咕噜咕噜 v2.0.7 免费观影神器 海量影视播放软件 56
4k剧下饭 v1.3.5 免费高清影视APP 无广告追剧工具 54
电影侠 v3.5.0 院线电影短剧动漫播放器 多内核切换高清观影软件 53
哇哇影视 v6.3.3 免费高清影视大全 全网影视播放器 53
爱其意 v2.0.3 全品类高清追剧影视APP 49