00:00
好,今天呢,有大海哥给大家讲解上硅谷安卓技术啊,Bus源码分析啊,今天讲述的内容呢啊,包括这么七大块啊,包括这个in bus简介,下载地址,使用步骤啊,粘性事件源码分析啊总结以及这个参考网站啊,那么今天的重点内容呢?啊,其实就这一个啊,就是这个源码分析这一块啊,是重点,其他部分呢,都是介绍啊,因为那个在之前的这个呃,In bus讲解中啊,有详细的讲解啊,如果有需要的同学呢,可以去这个官网去下载啊,去哪下载呢?带大家看一下上硅谷。找到这个视频下载啊,这个地方。安卓。安卓里只有in bus的详细讲解啊,详细讲解啊,这里面呢,我们就不在这个啊详细讲解了,详细讲解内容呢,是这个in bus,但是呢,我还带着大家啊提前过一遍啊有个印象。
01:05
好,首先呢,介绍一下这个in bus啊,这个in bus啊是这个安卓端优化的。安卓端啊,优化的这个消息总线啊,它用于干什么呢?主要是应用于这个程讯内组各组件之间和这个与后台线程之间这个通讯的啊,这个通讯在这个应用内部通讯是非常非常这个有优势的啊,而且是轻量级的,比这个广播啊还用的顺手,那么它这个原理是什么样的呢?啊,大家大家看一下这个图啊,其实非常简单,就是一个发布者。啊,通过这个事件啊,发送发送了呢,这边呢,是这个事件的接收者啊。这边啊发送。发送这个消息,那这边呢,哎,你只要一注册,那我就能收到你发送的消息啊,就这么简单啊,就这么一件事情,一边发一边收啊中间呢,是通过一个事件总线啊,发生什么类型的啊事件啊,其实非常非常简单啊。
02:15
好,接下来往下看。啊,它这个呢,下载地址啊,大家看一下。Get up上的。好,这个呢,就是get上的英文啊,这个源码啊,有需要的同学呢啊,可以在这里去下载啊,这是英文的啊,写的还是非常不错的啊好。接下来呢,就是这个的一个使用啊,我在这里面呢,只是简单再给大家介绍一下啊。啊,首先第一步呢,你是需要添加一个架包啊,到这个LIS文件夹下,接下来呢,你就需要一个注册,就一行代码in box.get default啊将这个三角文传进来啊就OK了,接下来呢,就是这个解注册,有注册就有解注册啊防止这个内存啊泄泄露啊下面呢,就是构造你发送的这个消息的类消息的类型。
03:15
它就是根据你这个消息的类型啊,去接收啊和发送的这里面,比如说定义了这么一个event啊,这么一个类,发送的消息呢,也就这个消息啊,后面呢,我们会啊看到啊再往下呢,是这个发布消息啊,注册解注册完事啊,消息也定义完了,然后呢,你就需要发送消息,也是一行代码post这个消息的类型,Message event啊这个类呢,你可以创建很多很多种啊,创建一种呢,就产生了一种消息。这样啊,接下来呢,是这个接收消息啊,你发送完了之后,那我怎么来接收呢?啊,这个接收啊,采用这种注解的方式啊,这个呢表示在主线程中啊,这个呢,通过这个参数啊类型,也就是个事件类型啊,来决定你是否是要接受这个消息啊,这个就决定了它只能接收到这个event啊,这个类的事件的类型。
04:13
啊,那么这个消息在主线程中执行还是在主线程中执行啊,这里面有四种说法啊,如果你定义这个消息类型啊,这个外may,也就是这个地方,这个注解外mode,如果是right may,那么它会在怎么执行呢?表示这个方法在主线程中去执行啊,在主线程只要你接收到消息之后,我这个消息是在主线程中去处理,那么如果你这个。Right mode啊,如果它是这个background啊,那它是什么意思呢?表示该方法在后台执行啊,不能并发处理。什么叫不能并发处理呢?就是说。
05:01
我这有一个事啊,事情它一一处理完之后,我才能去处理二,然后才从能处理去算啊,而不是说我处理一的同时我再处理二啊,这是不行的啊,同时开多个线程,这么同时去处理这是不行的啊,这个background就表示的是不能并发,那么下面这个a think也表示后台执行啊,但是呢,它可以异步并发处理啊,是这样的,那你后台同样有个消息啊进行处理,那么他就可以并行的去处理啊,就是异步。啊,这个意思啊,再往下,如果你这个thread mode是posting,那么表示该方法和消息发送方在同一个线程中执行,这什么意思呢?如果你这个发送方。这面是接手网。如果你发送这个消息是在这个主线程中执行,那么我接收方处理的事件也是在主线程,如果发送方是在这个子线程中去发送的,那么这面也是在这个线程子线程中去接收。
06:10
啊,同一个线程你是谁我就是谁,你是谁我是谁啊是这个意思啊,这也是个方法啊,大家必须要记住啊,这也是这个in bus一个特点啊,如果说他不会,那说明你这个bus啊孩子没用到位,所以说呢,这个地方要重点掌握一下啊,我给他标红了。啊,再往下。就是这个even的粘性事件。啊,这个粘性事件什么意思啊。之前说的这个使用方法呀,都是需要这个先注册啊,再POS啊,也是什么意思。也就是你必须得先执行这句话之后。哎,你这个当前这个activity啊,或者是个类当中才能去接收这个消息,你不先注册,你是接收不到消息的,那么这个粘性事件什么意思呢?啊,那么如果这个是使用的是这个粘性事件发生事件,那么可以不需要先注册也能接收到消息。
07:14
就是说这句话我可以先不写。哎,我先把消息接收来,接收完之后我在干嘛呢?哎,我在这个接收消息之后,我再执行这个注册,那么就立刻收到了这个发送过来的消息。啊,这个方法给大家演示一下啊,这个呢,就是我写的一个代码啊,代码呢啊这也有啊,我就先不运行了啊,比如说这个粘限时间这个C啊跳转到C页面。啊,跳过来是吧,正常我是发送过来的消息了,但是你看下面我是不是没有显示的消息,我一点击显示数据,立刻这个年性时间啊就收到了啊可以带着大家看一下这个代码。粘性事件。
08:00
跳转到,看这是跳转到。C页面啊,但是跳转之前呢,我发送了一个典型事件啊,这个是post snake,然后我们就来到了C页面。来到世界面看干什么呢?嗯,看我这里面有没有注册这个bus,哎,看这诶这有一个注册了bus,那我是什么时候注册的呢?我是不是点击了这个接收按钮啊,也就是说我点击了这个显示这个按钮之后,我才啊显示啊才进行注册。也就是说。我是后注册的。啊,一点击才显示,那么你看正常的一八是怎么显示的啊,你看当前这个页面啊,你看啊B页面返回的数据显示,我跳转到B页面。这边我发送一个数据发送了吧,诶一发送你看我又回到主页面了吧,这个页面中是不是发送普通数据显示了,那我再跳到B页面,我再发送一个事件发布的事件对象数据,那你看是不是将这个事件对象又显示到这了啊又显示这。
09:10
这个呢是啊,只要你发送我立刻就显示,那么这个呢,它是提前注册的,可以大家看一下。那么就是这个没页面没页面你看是不是我提前注册了,这个是初始化数据,这是初始化VI啊,接着来就是初始化数据,初始化数据呢,我上来就注册了这个啊。然后接下来跳转到B页面啊,跳转到B页面,也就是这个过程,跳转到B页面来到这两个按钮,这两个按钮呢,一个是发送普通消息,也就是string类型的,一个呢是发送的是message event这个时间类型的。啊,两个事件类型。那么一点击发送啊,然后呢,我就结束了当前页,结束当前页呢,它是不是就会回到这个max啊,它进行显示,那么它一进行显示。
10:02
它就会更新这个页面,也就是。看跳转B页面,我一发送结束当前页,那么这个TV test啊,它就会显示,怎么显示的呢?它是通过订阅了这个事件啊,订阅事件你看这个步骤,TV result.site传过来的消息啊,这个呢是传过来消息是这个event类型,我可以将它设置显示,也就是说将我这个传过来结果显示到这个位置。啊,这么简单啊,具体的详细的这个讲解过程啊,大家可以参考上硅谷官方那个网站的视频,因为有详细的讲解,这里面呢,不作为重点啊,今天讲解的重点内容呢,是这个源码。好,下面呢,啊,就这个过程我带大家过一遍啊构造呢,发送消息类,先发送啊发布这个消息,然后呢接收。啊,你是可以接收的,但是呢啊是不能立刻显示的,什么时候显示呢,你得一注册。
11:01
那一注册的时候我才显示啊,这个就相当于是后注册这个是这个in bus啊一个特点啊,大家要记一下。好,今天呢这些啊,其实都不是什么重点内容啊,重点的内容呢,是这个源码分析啊,源码分析啊,一会儿呢,我们会详细讲啊,最后呢,是这个总结一下这个in啊要记住哪些内容,最后呢,这个是呢啊,我参考的两个博客啊,非常感谢这个啊两个博主啊。
我来说两句