00:00
好,这个loading配置呢,我们就说完了哈,这应该算是我们讲这个项目这几天过程当中啊,应该算是比较难的这一个点了,那下面的话呢,我们这个。为了方便大家去理解这个事儿呢,我们画一个这个整个的流程图啊。看看这个画图,哎,这个画图的话呢,其实在我们这个里边呢,已经都画好了,嗯,画好的话,我们这块呢,就相当于是再带着大家呢去画一下啊,你也可以看一看已经画好的这个也行啊,叫load配置的整个一个执行过程。啊,执行的一个流程。好啊,那这里边呢,我们主要关注的就是以home f为为例啊,它呢是有可能显示四种不同的状态的,看看它在整个执行过程当中是如何调用啊loading配置的在我们后frame里边啊啊首先呢我这呢先整一个框。换一个。这样的吧。嗯,这个框里边的话呢,先再来几个框,这呢是专门就针对于home fragment的一个调用的情况。
01:13
关于他的。行,然后这个跟这个我们再CTRLCCTRLV一下。哎,这里边呢,涉及到就它的这个负类叫贝。哎,Frank。A can a。然后录音配置。啊,那这个呢,我们稍微。更胖一点。好,那我们这里边来看一下整个这个过程当中是如何去调用我们的loading配置啊,Loading配置其实说白了呢,就是一个。是不是frame lay out呀,其实其实也相当于是我们也算是自定义的一个视图吧,从广义上来讲啊,只不过这里边呢,我们也没有说,呃,说让它呈现一个说跟系统里边某一个组件不一样的一个效果,这还没有,只是说呢,我们在这里边呢,让他去决定了这个子视图到底呈现什么样子啊啊这呢,其实也算是自定一个控件了。
02:20
然后呢,我们就看一下我们home fragment里边,它到底想呈现哪个页面,因为呢,每一个联网的页面的,联网的这个fragment里边呢,是有可能有四种不同的显示的,那这四种不同显示呢,就全放在这里了。啊,那就是根据你的实际的情况,看看到底是选这里边儿的哪一个,就是我们这儿呢,想做的一个事情啊,就是抽取它的一个思想,那我们就从这个后frame最初这个位置开始啊,最初的时候呢,Home frame这个对象呢创建了。啊,这呢,我们可以这样写一下。这是第一个这个过程相当于啊呃,我们呢是调用它的这个构造器,用了一个home fragment,但是此时呢,并没有去调用base fragment的啊,不是贝,并没有调用你自己的生命周期方法,哎,当你去执行,我们通过这个叫transaction。
03:11
哎,调用你的这个叫commit方法的时候,此时呢,我们才去调用它的是不是生命周期方法呀。对吧,哎,这个神秘注意方法的话呢,呃,就是我们说的那11个哈,先先后就都掉了,当然我们这里边呢,主要关心的。哎,首先呢,就是on create view on create view呢,我们没有在home frame里边呢去写,因为呢我们抽取了,所以呢,我们这接下来就会掉到这个位置。啊,在这里边呢,去调用这个on create view方法啊,相当于是从这个左边呢就过来的。嗯,这呢,就是从我们这个,你在mayxt里边呢,写的这个一上来我们就有个哎S0。啊,或者你你选别的啊,选是选一个,总之呢,他一定会去调这样的一块操作啊,然后就调到这个on create view里了,那这个on create view里边呢,我们new了一个。
04:09
楼顶配置。啊,相当于我们造了一个楼顶配置的一个对象啊,这这里面当然有这个参数了啊,哎,我造这个对象的话呢,那进而就会去调用这个对象的一个构造器。哎,调这个故障器,那这呢就转到这个位置了。哎,那这个构造器的话呢,因为我们这相当于让他去继承一个啊这个free out啊,那相应的这个构造器我们也提供了好几个看一下。那这呢,我们一般不都提供的是三个吗。啊在这啊,一个两个三个啊,这三个里边呢,我们通过写这次的方式,不管你调的是哪一个,总之呢,一定会调到一的方法,所以呢,我们这个构造器紧接着呢,啊就叫了一个in。那在这个利的方法里边,我们做了一些事情,就是我们就相当于是提供了是四,呃,应该准确说是先写了是三种是吧,那另外一种我们是延迟到这个主线程当中给他去设置的啊,所以我这就直接写了啊,因为你虽然封装在不同的方法中,但是这个方法都是通过它来调的啊,所以在这呢,我们是提供了四种啊,不同的这个界面。
05:23
啊,就是我们这里边的这个操作,在这个Internet里边啊,这呢这写了三个哈,然后这个方法里边呢,我们是又提供了一个,他他这呢又把这个给提供了,相当于是四个界面就有了啊。啊,我现在这样就写了一下,那提供这四个不同的页面,这个页面提供好,那这个时候呢,实际上在我们的这个loading配置哈,我们说它继承的是一个在在这写是吧啊extend。Friendly out。嗯,本质上来讲,它就是一个布局了。
06:00
啊,那此时这个布局里边我们写了四个界面,然后通过这个ADD view这个方法呢做一个添加啊ADD view方法之所以有就是我们form out,你是集成于view group,那view group就是实现了这个view manager这个接口,接口里边有这个方法啊,因为任何一个布局都可以添加此视图啊,所以就可以加,那此时的话呢,我们这个界面上其实你可以想象成就是loading配置里边呢,是有四套啊,这个时候呢,四套这个重叠显示的。那接下来我们就要考虑到底应该显示哪一套,所以我们在这个阴的方法里边,紧接着呢,就让他去调用了另外一个方法。哎,我们叫收C配置啊,这种把它呢也呈现出来。哎,收Co配置啊,这个收Co配置呢,我们其实就是为了保证呢,它在主线上当中去执行一些逻辑,所以在这个方法里边呢,我们其实没有写太多核心的东西啊,主要就是为了保证在主线程中执行。
07:01
啊,这个方法啊,说保证其这个内部的这个操作在主线程中执行。啊,然后这个方法里边呢,我们当时不是在UI里边去造了个run u thread啊,紧接着呢,我们里边封装了另外的一个方法的调用。哎,是不是就我们说的这个叫收。是不是配置啊,哎,在这个方法里边我们做了什么事啊。嗯,这个里边呢,我们你看一方面是不是针对针,就是主要针对你当前这个state current决定让谁显示啊,啊这是我们说的这个算是第一个事情啊。说针对于state current。
08:00
哎,它的这个值。啊,决定。加载哪一个界面显示。啊,那这里边呢,我们说默认或者说最初啊,最初这个状态呢,我们是不是让这个呃。对是这个loading current呢是等于一的,就是让他去加载那个loading的界面啊,所以呢,我们任何一个界面,你一上来,他跑到这的时候呢,它都是显示的是一个loading。啊,就是因为这呢,我们先是让它写成了这个一,那这是我们说的第一个事情啊,那第二个事情的话呢,那就是我们在这里边呢,其实暴露出来的一个抽样方法。嗯,就是当你去加载成功的时候的话呢,呃,我们让去加载这个,呃,具体你这个fragment的这样的一个布局,因因为在不同的这个页面加载成功,它显示的效果不一样啊后re是一样啊,这个invite me啊这就是其他的了啊,所以我们第二个呢,在这里边相当于是啊暴露来暴露出来一个抽象方法提供了。
09:03
抽象方法。来这个抽样方法呢,我们就到一个layout。ID。那这是这个抽氧方法啊,那这是这个抽氧方法了,那这个抽氧方法呢,我就是写在我们的楼顶配置当中,进而呢,当你在这个位置去new一个对象的时候呢,我们是不是就要重写这个两个方法。哎,这呢,我们标示一下。那重写。啊,Layout ID这样的方法在重叠这个方法里边呢,我们是不是又掉了一个叫get layout ID这样的一个抽象方法啊。哎,那这是一个乘号方法,那你home呢,你继承于我,那你是不是也要重写我这个方法,所以在这里边我们相当于是就提供了一下,你如果加载成功的话呢,你显示什么界面。
10:04
重写。At layout ID啊这样一个方法,所以这里边你要往下顺的话呢,就是哎就是这样的啊,往下一直顺下来,那这个重写呢,就是因为你这里边呢,提供了一个哎说导的这个重方法。啊行,那这里边呢,根据你这个状态我们加载让谁去显示,那默认值是一了,那行,那这个时候呢,其实是不是意味着我们,哎,通过这生命中一方法一调这就调到这儿,这一调这儿呢,就光光把这个一的这个界面给我们显示出来了。哎,所以相当于是我们到这儿的话呢,你可以,哎是不是画一条线了。能理解吧,哎,就是这时候呢,界面当中,我们以这个联网的这个页面为例哈,它相当于是呢,就能够加载显示一个,就是这个正在加载的这样一个效果。是这样的,好,那接下来的话呢,我们再说就是我们分析的时候啊,分析时候讲的就是这块呢,已经搞定了,下面呢,主要来看这个四跟五。
11:07
啊,看这一个四杠五,呃,四跟五的这个调用我们的一个初始的一个头,算是从哪来呀。哎,是不是,嗯,这个unclere view方法已经到这了,是吧,到这以后呢,我们紧接着呢,在它的这个后面啊,哎,对,是不是掉那个第二个生命周期方法了,所以整个呢,都是自动的往下走的。哎,现在视角啊。I。啊,在这个方法里边,这个方法里边呢,我们做的事情呢,不多,就是调动它本身的这个受是吧,本身的这个受呢,呃,是不是紧接着就去调我们下边它这里边这个数了。哎,所以我这就这样写一下,或者你直接在这里边调这个流宁配置的时候也行啊。哎,我们主要在这写的这个目的呢,是不是在这里边写这个时候目的就是为了保证在他之前那个生命周期方法里边得先new了对象呀。
12:07
对,所以呢,才写到这了啊哎,所以在这里边呢,调他的这个数。教这个手方法。那想一想,我们在这个收方案里面,我们做什么事了?嗯。这个里边呢,我们写的这个逻辑呢,还是比较完善的哈,我们这边还判断一下用户这个是不是一个本地的,所以我们还写了一个,嗯,这个URL是不是一个闹的一个问题。啊,来找一下我们这里边这个售啊,嗯,那这个问题这个问题的话呢,我就做一个补充点啊,那在暂时呢,我们就先忽略掉它了,主要这个售方案里边要做的事儿,不就是你刚才做了前三步以后,后边做的这个后两步嘛,后两步主要不就是联网吗。哎,所以呢,就是我们后边这个操作主要目的呢,就是来决定一下,我们不能光显示一个加载中啊,我要显示成功了,失败了这个页面,所以这个收方案里边主要做的是就是使用。
13:08
我们这呢,用的是ain http了。哎,使用它呢来实现联网,哎实现联网操作呢,我们用get方法也好,Post方法也好都行,这里边呢,你要是呃不管用哪个了啊,你得相对应的得暴露出来,你到底要联网这个URL是什么,所以我们这个联网上呢,现在又提供了抽奖方法。哎,UY2这是一个,哎,可能会有参数,哎,我们又启动了叫。哎,这样的一个测算方法啊,然后以及的话呢,呃,用户呢,这个响应。呃,得到响应。哎,这个响应的话呢,我们是是不是又对应着两个方法呀。那一个是UN success,这里边还有一个content是吧。那这是其中的一个了啊,然后另外呢,On failure。
14:05
哎,这是两种情况。那我这能做的呢,主要就这两个事儿了。啊,这两个事里边呢,我们重点或者主要要做的一个想法呢,其实就分成接下来两个点了啊,第一个点啊,就始终,你不要忘了你最终要干什么啊,就是你始终呢,包括你生活中也是一样,是吧,不能天天光埋头干,你抬起头你看一看你现在在哪儿呢?然后你前面的目标是什么,不能走着走着这个就迷失方向了啊呃,我们要干什么呢?呃,我们要做两个事哈,第二个事呢,就是我主要呢,就是想改一下我这个state current这个值。诶正好呢,你是成功的,失败的,我就有机会去改这个渠道。第二个呢就是呃,如果是成功的稍微麻烦一点,成功的话呢,你还得把这个数据count的想办法再给我传到这边。啊,这呢,就是我们要做的这两个事情啊,那这两个事情那个完成的话呢,我们又额外的多了一个事情,我们就把呃,你的联网的这个状态。
15:04
啊,以及呢,就是你这个内容。封装在一个是枚举类当中了,哎,我们就现在提供了一个枚举类啊,所以呢,就是当你这个on on success这里边的时候呢,这里边其实分成两种情况啊,一种就是空的,所以我这就这样写啊啊一个呢就是result,我这样写state啊,就是要么呢,它是对应的是这个empty是吧,简写了哈,这是一种情况。啊,然后另外呢。啊,你这个result。哎类呢,它是一个success这样一种情况。再往后两条。行,这种情况呢,我们让那个cton呢,是一个哎,双引号里边什么也不放了啊,这个时候的话呢。或者或者先先到这吧,先把这个简单一点说了啊菲呢,就是让这个诶诶。
16:03
再往下呢,是一个嗯,Error。哎,是这样情况,他呢,这个看也是个双引号,里边什么也没有,那是这样。嗯,然后呢,如果你是一个success。啊,如果是个success,我们这儿呢,是不是还得去提供一个内容啊,嗯,那再去提供一个内容这块我们是怎么写的呀。我们在这个里边呢,现在再往下啊,是不是让他呢,去暴露出去一个方法呀。哎,是不是on success,一方面呢,把我们这个result state是不是传过去,另外是把我们这个content,哎,哎,不是这个是是我们这个success view。这个进来,因为这已经放在这里面了。啊,这个这个对应关系能看出来啊,这是它下边的这个操作,这个方法呢,我们说是一个抽象方法。所以相当于如果你要是成功的话呢,这呢就相当于又会呃,通过这个位置呢,对应的一个抽样方法。
17:07
哎,这块绕呢,其实就在这块呢,优势稍微绕一下。哎,这个抽样方法就是on success。哎,这个参数我就不写了啊。行,那整个到这块呢,呃,你整个事方法完了以后啊,不管你是这样也好,这样也好,总之呢,我们在这个最后的时候。哎,我们总是要回归到你上面是不是收Co的这个调法,哎,是得调这个方法啊,所以在这个这三种情况啊,这你要细分的话,就这里边两种情况下,这个三种啊,这三种情况下,三种情况下都会掉。哎,调用一下我们这个,呃,受。啊配置啊,这呢就相当于又掉到这个上面了啊,又调上面这时候是不是,诶根据你的这个current这个值,因为我们在这里边呢,就可以做一个修改了啊,其实就我们是先调的这个哈,先调的是不是有一个。
18:07
我叫loading还是loading?走了。先调的是他啊,我在这里边呢,都掉了这个漏的。嗯,这个方法里边呢,我们是针对你这个媒体类对象的值,是不是去改的这个statement statement character啊,都调用这个,这个我就先这么照一下啊。哎,都叫上他。哎,带有这个的配置。啊,在这个路的配置里边,我们说根据。啊,根据我们的这个叫result。
19:02
State,哎,根据它呢,去修改我们的这个叫state,哎,Current。哎,修改是他。根据它呢,是修改这个值啊呃,修改这个值,然后呢,实际上我们这个方法的话呢,还还还不是说直接。不是说在这块直接写的他是吧。记得吧,你看我们这里边写的它,呃,在这里边呢,嗯,成功的时候写到这儿了,呃写写的这个log文配置里边哈,刚才呢,你要是没有写它,那就是先可以写到这,你要写出来的话呢,就把这个就拿掉吧,CTRLX啊这个就不明确在这去写了,实际在这里边的话呢,呃,修改这个状态说,如果你要是个成功的。啊,说如果是。Successor。或者如果是这个,这样写吧,是state。
20:02
科尔等于这个四。那在这种情况下呢,我们是调了一下这个逻辑。哎,然后这个逻辑呢,讲的这个。把这个整个往上移啊。哎,是这样子的。呃,这边是调它,然后呢,在这个loading配置里边呢,我们修改完这个值以后啊,最终目的呢,还是要调我们这个Co配置。男教练黄了。最终目的呢,我们都是为了调这个收配置啊行,收配置呢,又回到最上边呢,收配置里边再调收配置,然后决定你要显示的是哪个状态,那成功的话呢,把它呢就调用一下。
21:04
啊,就这个过程啊,那这里边呢,我们看到从那个受方法这个位置开始,有这样的几个抽氧方法啊,Ul car啊,然后呢,还有这个on success这个。哎,所以呢,我们需要呢,在这里边又要去重写。哎,就是因为你这上面找对象了啊,重选呢一个叫UR的一个方法。哎,这个parents这个方法,哎,然后呢,你如果是个成功的这个啊。这个方法好,这个方法呢,在get,在这ul里边,我们实际上又是不是提供了一个抽象方法。哎,这呢也是一个抽象方法,然后这个per。Get。
22:02
那这呢,也是一个重要方法。嗯,然后那个success呢。哎,在里边呢,我们是不是又写了俩。一个呢,叫in开头吧。这是一个。In data,哎,Data呢,因为你要装数据,我们这呢,是不是把具体这个content给传进去了。哎,这个content的话,是不是就是你这个success给我传过来的时候,这块里面不是有那个result啊,是不是有我们这个result state啊,啊也还有这个success一个view是吧,那这呢,我们做的事呢,就是在这个方案里面绑定一下。啊,绑定一下这时候呢,我们用的这个button APP啊另外的话呢,把这个result state这里边这个数据这个count取出来,然后呢,传到这,让这边去用这呢也是抽象方法。行,那既然你这里边提供了这么多重要方法,那我这个home作为它这个子类呢,就下边就要去重启了。
23:10
好,那我们这里边呢,就要重写啊这样的一些。啊,首先呢,指明你这时候你到底要是连的哪个啊ul啊get ul指明你这个网址啊,然后呢,你是不是需要这个参数get parents啊这个呢去提供,然后in,哎,如果你加载成功的话,In title是什么样子的?In的data,把你这个数据呢,也相应的给他初始化一下,那具体的联网呢,就不用在你这块去写了,我们都写到这个位置了。啊,那这呢,相当于我们整个这个home fragment呢,就需要重写这样的五个抽样方法就可以了。哎,这块呢,主要是他要重写是针对这块的啊呃,然后呢,呃,这边这个重启呢,一方面呢,是有这样的一块需求,呃再一个呢,就是你下边有这样的一个success这样的一个需求。
24:07
哎,是冲击他的。是这样的。哎,这呢,就是整个我们这样的一个逻辑哈。啊,就是我们这里边这个load定配置,就是说白了就做一个事,就是你决定要显示哪个界面啊所以呢,它总是需要告诉我们这个呃,Stay current到底是多少,那操作state current这个操作呢,我们是写在收save配置里边,那就是我们调这个方法,那所以呢,一开始这个呃,Stay count是一,所以我们调这里边就正在加载了。然后呢,后续我们去连那个网,连完以后的话呢,去改这个值啊,这个成功啊失败啊,空啊不空啊,改这个值啊,改完这个值以后呢,我们再去调这个配置。啊,那这样的话呢,你就能够呈现一个界面,而整个我们这个base fragment里面呢,哎,它就是显示你这个loading配置的。啊re view反回是个view,我loading配置就是个view,就是显示我的啊,所以你你呢是谁呢,它本身它不不显示,就具体是fragment frag啊他要显示谁,那我就看我调这个方法的时候呢,给给我谁我就显示谁。
25:12
就看你这个state current到底是几了。啊,稍微难点在哪呢?就是如果是成功的话呢,我们需要把这个数据呢给传过来,所以呢,我在这个成功的时候呢,写了一个抽样方法。哎,这个抽样方法呢,把数据放进去,这个方法呢,就是按照这个顺序自然而然的就会掉,这个方法呢,你这块也跟着就去重启,那这个方法呢,你就会自动的掉,掉到它的时候呢,这个数据就有了,那就拆分成俩,你再重写就完了。哎,那后续我们再需要有联网操作的话呢,直接呢,让这个比如invite fragment呀,Me fragment啊哎直接呢继承一它,然后呢,重写这几个创造方法就可以了啊这里边这个结构都已经都写现成了。啊,也就是说呢,如果大家期中好一点的话呢,来把我们讲这漏洞配置自己去写一写,这个图呢,你也可以自己呢下来画一画。
26:03
啊,这个你要能画出来,那说明你是清楚的啊,那如果实在觉得稍微有点困难,大不了你就把它呢,是不是也当成一个线程的线跑的一个结构啊。啊,你后边在具体的这个每一个页面需要联网了,直接把这个路径配置粘过来,是不是直接用也行啊。也可以啊,就这就是我们说的这个过程。
我来说两句