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

app软件
0 674


对于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 GKD v1.9.2-b1 广告跳过神器,附加最新规则 21
Nodepay零成本挖矿撸毛,和grass同理,没赶上grass的可以冲一下 112
Android 麦田影院 v1.0去广告纯净版 61
Android 网易云音乐 v1.5.30去广告定制版 56
AI Chat 超级AI语言助手 v4.0.0.0解锁高级版 61
Android 大师兄影视 v3.3.6去广告会员版 182
Android 追忆影视 v5.0.0去广告纯净版 128
Android 爱其意 v1.2.0去广告纯净版 118
Android 红果免费短剧 v6.0.1.33解锁会员版 182
热门帖子
Nodepay零成本挖矿撸毛,和grass同理,没赶上grass的可以冲一下 112
【精品免费PC梯子】目前最稳定的免费PC电脑梯子VPN推荐 – 五款高效电脑V2ray梯子工具 111
每天看看广告浏览日入500+操作简単,无脑操作,可矩阵 56
黑科技玩法,一单利润9.9,一天到手1000+,新手小白秒上手 51
全自动运行,单机日入500+,可批量操作,长期稳定项目… 48
国外知名游戏打金无脑搬砖单机收益500,每天操作七到八个小时 45
全自动挂机项目,一天的收益800+,操作也是十分的方便 44
无脑搬砖项目 0门槛 0投资 可复制,可矩阵操作 单日收入可达2000+ 41
只需一键生成,AI自动写小说,每月躺赚5w+ 38