00:00
准备把它运行起来,让大家看到一个现象啊。这里面挺有意思的现象啊,我们一个一个来看。嗯。把这log先给它清理掉,清理掉以后呢,来啊,点击好了,大家先来看一下。我的试图。被创建了吧,是吧,啊,试图被创建了,但是我现在有发生什么事件吗?有什么突破吗?没有吧,好来。我们先呢,不触碰这个image或触碰下面。我先整下面这一部分,下面这一部分我操作的是哪个视图。那个线性布局吧,嗯,Out,好了,我们看一下事件会不会分发给这个image view走。大家来看一下。
01:00
首先,谁感受到了这个事件?Activity是不是准备去分发呀?啊,什么类型的事件,原因是什么?啊零来看一下。零是不是大啊啊木是二啊21。好,来继续往下看,零呢是当啊分发你来看最后交给谁处理呢?是不是交给activity处理了,这个耽误时间了,你看不交给activity处理的方法了吗?有没有交给image view?这是不可能交给image view的,因为事件就没有发生在image view的那个视图区域吧。好,大家看着这个是什么。什么事件呀?啊,是木,大家看着啊。
02:00
啊,是木啊,OK,这个换成木事件,木事件交给谁数呢?是不activity activity了,好啦。那后面是不是发生了好多木偶事件啊,因为我不断的在移动,最后有一个什么啊啊。是吧,最后有一个啊好了,嗯。这个呢,只能说明部分的问题。来,我们看有些问题是可以说的。第一个。事件产生的顺序为什么呢?大木木,不最后什么啊?OK,每产生一个事件,是不是都会具有一个分发和处理的过程呢?好了,事件对象被系统创建后,首先会调用什么呢?对应的activity对象?什么叫对应呢?其实非常简单,就当前操作界面的那个activity吧。
03:03
嗯,它的哪个方法来进行分发呢。Dispatch它是疑问,就是activity有这样一个方法啊,可以供我们去使用。dispatch它是疑问,就它。OK,在这个里面它会做一个什么事呢?他的这个分发啊,大家看。啊,他执行这个方法主要是做什么工作的呢?他是将事件分发给那些布局,那些视图。对吧,OK,但是这个地方大家看啊,有这样一个非常关键的一句话。get.ch。OK,这个看的话是挺困难的,因为现在呢,嗯,这个方法啊,大家看看这个方法诶。
04:03
是抽象的啊,那个那个那个现在大家是看是直接看不到的啊,我跟大家简单的说一下,其实非常简单。就是他就把那个这是我们假设这是我们的啊,这是我们那个线性布局可以吧,啊,这个是我们那个image view。OK,现在我们是不是操作了他呀。首先是产生了一个大事件吧,当事件先交给谁?是XP来分发呀,XP怎么分发呀。他先交给这个根。那个根再交给谁呀?是不是imagine you啊?对吧,Imagine you,我们说所有的视图都是不是有一个分发的方法。对吧,OK,而这个线性布局分发的方法就是去找我这个事件有没有发它,但是你分发它能分发线,如果我们点击它能分发给这个image就用吗?分发不上去对不对,只有你按在这个image上才能分发吧,那也就是说这条线路是分发不过去的,它就停下来了。
05:20
对吧,OK,停下以后呢,默认跟大家说。我的这个线性布局是没有消费那个实验的,那最终交给了谁了?Activity。啊,最中交给哪个地理好吧,是这样的看。下面我们做一个操作,这意识操作操作它。操它比较有意思,因为这个呢,可看看点太少了,来试一下大家看看啊。这个主要是理解啊,大家就跟着这个,跟着我思路走一下来。
06:00
操作一下我也不问太多了,来我们来看一下。首先是什么?I,你去分发吧,最终交到哪去了?是不是我的那个image view里面去了?通过我的imagine view去分发吧,那imagine you还有孩子吗?没有了吧,你imagine milk肯定没孩子了,没孩子了就不会继续再往下分包了,那这个时候你看他,他去掉水去了。是不是毁掉方毁掉的监听了,监听listen嘛,那监听掉完了以后,它又得叫什么。是回调方法呀。啊,回调方法?有人可能在想,怎么又整监听,又整回调方法了,能不能不整监听,只整回调方法了?就是说他在设计的时候,为什么要想到又整又要整监听,又要整回调方法。
07:01
你说假设。我没有监听器啊,就是说他这个设计者不涉及监听器行不行。会有什么问题?大家在想,如果没有监听器,我要去对这个事件进行监听,我必须做什么?匿名我必须不是匿名类类的问题啊,我必须定义一个类去继承于那个视图,并重写这个方法对不对?如果没有监听器的话,我是不是只能是写子类去记去重写方法了。对不对,OK,我监听去啊,真正我们真正去写的时候啊,一般不会写它,可能平常的时候不会去写它的,不会重,因为重写这个方法太麻烦了,需要先去定一个类,去重写这个方法,还要将我们的全类名配置到什么。是个布局文件里面呢,你写一个my you是我创建的吗?
08:01
这个对象是我同年的吗?刚才我创建对象了吗?没有,是不是它自动创建的,那自动创建他怎么知道有你这个人存在呢。你是不是得在布局文件里面做一个什么,做一个配置呀,你得配上我的什么。全内名对不对,OK,那此时啊,他们各有各种了,这一个用于平常我们去设置监听。呃,为什么要有这个毁掉方法呢?这个是为了我们写制定空间的时候去做的。我们去解资金空间的时候,写资金视图的时候,肯定会用到它的啊,它疑问。Okay。好了,来这说的是当事件啊,分发给了我们的那个imagine you来处理。
09:01
但是这个地方后面这个很关键。这是一个什么东西?你怎么理解这条打印呢?这是那个当事件交给谁处理了,是不是交给activity去处理呢?好,这个地方大家就要区别两个概念。一个叫处理。一个叫消费。好的。什么叫处理呢?就是调用回调方法,或者是回调了监听啊,OK,就是回调了。啊,是回调方法或者监听去处理了那个你的事件,这叫处理了。那什么叫消费了呢?返回去,它那个都有一个值叫返回去,如果说啊,在这个地方返回的是boss。
10:02
那就没有消费。啊,OK,而事件必须得找到一个消费者。现在相当于谁最终消费那个事件。是不是里啊。OK。虽然说我也交给它处理了,但是呢,他返回的是什么呢?Boss,哎,我们来证明一下,看看它是不是返回的boss。首先它是反复的波法,这是一个好,它不还有回调方法吗?它这个地方是不是有一个舒火呀。哎,这个输入的什么呢。OK,一言缓回的,有人说他有时候也缓回出啊,但是你就知道这个时候缓回的就是破啊,我把这个结论给大家说一下。如果说你这个处理。事件的方法,返回的是boss,那代表你没有消费。
11:03
那你没有消费,那你得交给其他人消费呀,最终的最终会交给谁了,Activity。好啦,看到下面下面有意思。大家看着啊,你看下面这一个点,这是什么意思。这说的是我的activity积分发直接交给谁了?哎,特别有意思。他还往下分发,还分发给视图吗?他为啥不分发?你这个哥们,你耽误时间,你都不想消费你,你消费目世界就没什么太大意义了。譬如说他的当事件要么要么就会能触发典型事件吗。不能先的,有什么大。后面有二才能有电梯吧?长案事件的触发吗?能吗?不能,因为你要先有当当下去消费以后,你才能发一个消息,发一个延迟消息,去触发那个惨案事件吧。
12:09
OK,这个地方他的想法就是。如果你当时建筑消费,那我不再考虑你了。是吧,OK好了,后面是不是直接都交给谁了。所有的木和ARM是不是都叫X了?好了,我适当做一个小修改,这个打印就会不一样。来,譬如说啊,比如说我这个地方,我把它。我把它改一下。我改成什么呢?我改成穷。该数什么意思啊,我把这个,我把我把这一个给它留着啊,我来返回一下啊。哎,返回数来看一下这会是一个什么样的情景,你就能看的出来区别。
13:05
这个主要是你要真正做的时候没有这么复杂,就很直接的啊,真正做的时候是很简单一个事,主要大家把过程了解清楚。来。大家看啊。等一下啊。好了,大家看还是activity,是不是先分发呀,分发分发给谁了?Imagine you啊,Imagine you调用它的什么,是不是监听了?它的尖听你又去掉谁,接着是不是调用它的回调方法呀,这个时候反回了什么处,你没发现跟上一次不太一样了吗?Activity还处还处理吗?不处理了。对吧,不会再去处理这个事件了。后面就直接是什么move move是不是分发给我们的imagine you啊OK啊,Imagine you又又消费了这个这样的一个流程,OK。
14:07
后面就类似的啊,都是这样的一个过程。好,这是一个。这是一个啊,还有一个大家看啊,我做一个它除了回调方法,是不是还有一个东西啊,还有一个什么东西。大家看是不是还有一个监听呢,诶,我要监听返回出来。会有什么星星是吧,看一下啊。刚才你应该看到是先调用的监听,再调用的是不是回调方法呀。现在大家需要关注一个事,就是我如果反馈了处回调方法还会不会执行的问题。OK。来看着啊,把这个清理一下。
15:01
移动。那当然了,你回调方法调用过没有?调过吗?没有诶,这是为什么呢?我刚才跟大家说过,就是一旦返回处,说明世界被什么消费了,那被消费了,我还有残疾的必要吗?没有,到此结束。BA已经访问出来。对吧?已经访问就说明世界已经消费,我没有必要再尝试着去调动你啊,去看你消不消费。这个啊,在他的设计里面就这样的,一旦有消费者来消费了,那世界这一个世界就停止了。也就是说一个世界只能被消费一次啊,是不是一次啊,只能被某一个对象消费一次,而且肯定会有一个消费者。
16:03
比如说,如果我的视图都不处理,谁是消费者呀?对activity activity,他就可选择。OK,好,这是一个测试,还有一个比较有意思的跟大家让大家看一下啊,其实这些呢,嗯,展期来说用的不多啊,只是真正去用到它非常简单,直接返回一个数就拉倒了,好的,但是这里面呢,我希望大家对过程有一定的了解,大家看到啊,我这么做一下。我get action等于什么呢?叫motion event.action down,我在down的时候返回住啊,这个时候返回住在其其他的都返回bos啊,我们来看一下这两种比较奇怪的现象是吧,这个挺怪的是吧?Down的时候返回来处啊,其他时候呢,返回bos。
17:02
我们可以看一下它是什么样一个调用过程。嗯,一个当的时候,是不是交给我的imagine you消费了呀,但后面谁消费当中啊,对activity我们来看一下。嗯。先给它去掉操作一遍。好。他这个时候activity分发,分发给谁了?Imagine you了吧,Imagine you,它这个on on touch的监听返回什么?To还是to?Down的时候是不是true啊,OK down的时候是true,那你看是不是事件就到此为止了呀,没有继续吧,没有继续了,好,接着你当是不是确定了消费者是imagine啊,接着你看他分发给分发给谁了。
18:10
报告给谁了?是分发给image view去处理啊,OK,由于我的监听器返回的boss,那他交给谁去了?是回调,但回调也反过来什么?报才秀。啊,他现在返回的是处吗?啊,他返还的数,那最终消费者是谁?消费者是哪个对象啊,是不是imagine you啊,OK,等于说我们前面啊做了一个返回POS啊,没关系,对不对,这个间密返回POS啊,这个地方返回POS,关键是我这里返回去的对不对是吧?OK。啊,这样的话,最终的消费者都还一直都随。
19:04
是不是view啊,好,这个最终大家能看到都是image view。我这个地方我把它。把这哥们。给改一下啊,这里你别调数,直接来个boss了,让大家能看的直接一点,因为他调就也是把这个boss。那这个时候呢?这个时候就是down的时候,是不是我imagine you消费了,但是move和up了,这个时候就肯定是activity了吧。来,我们来验证一下我们的想法。但是我跟大家他会分发给image吗?会不会,会不会像image分发啊,来看一下啊。比较有艺术。
20:09
看这里啊,在这里当的时候还是跟前面一样的是吧?啊是我的view消费的。你看它后面是不是分发呀,分发的时候分发给谁去了image view吧,Imagine view,去调用它的监听,去调用它的什么。回调方法,但是都没有消费吧,那由于都没有消费,叫谁去消费啊,是不是艾去处理消费啊,OK,好,这个时候你来看,其实他每次是不是都会尝试去分发给image啊。那也就是说当的时候,他会去确定消费者是吧,但是呢,消费者一定会去消费木事件和二事件吗?不一定。
21:00
对吧,OK,我会常常交给你去处理,但是你要不处理消费,你处理了但不消费,这个时候最终叫谁。I believe。OK,就给你机会了,对吧?OK,你要不珍惜,那我就给其他人了。嗯,就这样一个事啊,这个流程呢,大家先有一个基本的理解啊,因为这个在面试的时候呢,有可能被问到啊,但是对于我们的写代码呢啊,现在来说应该没有多大影响,我们去写的时候直接返回一个处就差不多啊,就可以搞定这个问题啊。
我来说两句