00:00
好呃,先简单复习了我们昨天讲的这个内容啊,诶昨天呢,一上来的时候呢,关于这个楼钉配置呢,又说了一下,呃,里边呢,有一些需要优化的一个点呢,需要我们去注意一下啊,诶关于它的话呢,以后诶大家在做这个项目当中的时候呢,你可以直接拿过来去用啊就可以了啊诶主要它的作用呢,就是提供不同的这个涉及到联网操作的这个fragment啊,它需要呈现四种不同的页面啊,那这四个页面呢,到底选择哪一个,这个呢,我们就是把它整个呢封装在叫loading配置这样的一个类当中,哎,根据你实际联网的一个效果,成功了,失败了,还是没有数据,还是正在加载中,哎,我们去loading配置当中去选择它到底是哪一个,哎,本质上我们这个loading配置啊,其实也看成是一个自定义控件一样,哎,我们也是让它继承一个现有的啊,Framely out了。啊,是这样的一个情况啊,诶里边呢,需要重点关注的就是呃,当联网成功以后,哎,我们得想办法呢去,呃让你这个路径配置呃将联网下载这个数据呢,再返回到具体的一个页面当中。
01:05
啊,这块的这个逻辑啊,大家下来的话呢,把它捋顺一下啊,我们也画了一个图,昨天嗯,好,那这个完了以后的话呢,接下来我们就开始考虑下边的这样的一些模块了啊,那下边这个模块我们在写的时候呢,其实就可以用一下之前呃涉及到的一些结构,比如说呢,我们后边的每一个fragment呢,呃,我们都已经写好了一个通用的base fragment。我们都可以直接呢继承现有的base fragment,哎,现有的这个base fragment呢,哎,我们都涉及到关于它的一个联网操作。所以说呢,嗯,我们都继承于相应的这个base fragment base fragment里边呈现在这个界面呢,哎,就是我们的loading配置,不管你是联网的也好,还是不联网的也好,全都是对应的配置。那这个load配置呢,对应的有四种不同的情况,假设这个界面呢,就不需要联网,哎,我们也可以把它看成是你是联网了,只不过联网成功以后的话呢,什么数据也没有,嗯,可以这样的来理解。
02:06
哎,所以呢,我们在这个load page置里边,呃,当他回头去调这个收方法的时候呢,我们收方法里边有一个判断,就是如果呢,你这个UR这个方法。就是说通过这个位置,我们来判断一下,你到底是需要联网还是不需要联网,不需要联网的话呢,我就直接的让你去返回一个success,那其实就是你自己对应的你自己的那个页面。啊,就体现为是一个不联网的这样的一个fragment的一个操作了,那联网的话呢,就正常的拿着这个URL正常往下走就行了,根据他这个到底是成功了还是失败了,再去返回一个具体的一个页面啊,所以说到后边呢,还会去调到我们的收Co配置这块。呃,相当于只要呢,你决定这个load定配置里边到底应该呈现哪一个页面,呃,总是要调到这个方法的前面呢,都是一些逻辑具体的试图去,呃一个呢是封装我们这个状态,这呢我们使用的result state啊另外一方面呢,就是获取联网成功的这个数据给人家传下去。
03:07
所以呢,在这里边儿涉及到一个unsuccess的一个方法的一个。重写啊。啊,那这呢,就是我们说的这个结构,后边的话呢,我们再写起来呢,就比较轻松一些啊整个呢就继承一现有的base fragment就可以了,那我们昨天呢写的呢,主要呢,就是第二个关于这个投资这这个页面,投资这个页面里边的话呢,上面是三个具体的tab配置indicator,那这呢,我们也没有实现一个自定义,哎跟这个view配置里边你选的这个项的同步,其实这里边呢,你把这每一个呢,你就看到是个小圆圈的话呢,其实就跟我们当初设置首页面的那个小圆圈儿,其实就一个道理了。哎,我划到哪一个项,哪一项呢,它就跟着我们变一下,其他的呢就不变。啊,是这样的一个逻辑,这呢,其实我们也可以自己去定义,没问题,那这里边的话呢,我们就直接使用这个框架了,那用的tab page indicator这里边的这个结构啊。
04:02
啊,那使用的时候呢,这里边儿有一个非常麻烦的一个问题是什么呀。哎,是不是就是这个样式啊。啊,就这个样式呢,我们发现呢,就是我们使用完以后,呃,也设置了这个样式的,结果呢,发现它不能够正确的被调用。嗯,关于这个钥匙,或者再准确点主题的问题,哎,通过这个呢,我们来说了一下这个contest的具体的实现类,Application和activity,它们两个是不同的。嗯,我们这呢,重点呢,相当于给他做了一个总结啊。嗯,就是需要大家能够记住的是什么呢?就是这个application跟这个嗯。Activity,呃,具体的呢,就是作为这个行参出现的时候。那作为这个形态出现的时候呢,这几个点呢,稍微关注一下,就在我们这个看里边,其实都已经说到了啊,啊比如说。给他写一下。比如说什么呢?呃,如果我们是要用一下new一个啊,Alert dialogue。
05:05
嗯,然后呢,这里有一个build。哎,这个位置呢,需要写个contest,这个有谁啊。哎,这呢,我们说只能够用FTT。哎,这是这个问题啊,然后呢,嗯,有一个位置是只能够用application的,是不是呀。对,在地图的一个集成中。哎,如果记图中用到我们这个con的话呢,需要用application作为这个具体的实现类,嗯,那剩下的这个两个位置三。呃,一方面呢,是我们说的这个tot,这我们常见的make test。第一个位置呢,需要一个contest,这个呢,我们说使用这个啊。Application。以及呢,用我们这个ID,其实呢是一样的。所以这个呢,就都还好啊,这个是都可以使用。
06:02
那这个上面的现象只能。来使用。嗯,Activity啊,这是我们说的这个第三个点。哦哦,谢谢。第四个点的话呢,就是我们说到的,当我通过这个view.inflate。这个方法呢,我去加载一个具体的布局,第一个位置呢,也需要写个contest,这里边儿呢,呃,如果从报不报错的角度来看,这两个实际上是不是都不报错呀?嗯,但是我们说建议的话呢,是用谁啊。哎,使用activity。这后边这个参数我就不写了,这呢是二者都可。但建议使用。嗯,这里边呢,就是你关注一下他们两个区别啊,有些情况下呢,其实用两个呢就都一样了,但某些情况下呢就不行,就是我们在这个应用当中看到的,嗯,比如说我们首页面当中涉及到这个字体的一个颜色,默认的时候发现activity跟application呢,呃,字体颜色不太一样,呃,另外呢,就是我们这个问题中说到的,我给这个t page indicator呢设置主题了,或者给它对应的这个activity设置主题了,结果发现主题不能够正常的显示。
07:21
就是由于我们这呢使用的是application,所以呢需要替换成activity。嗯,但是从这个报不报错的角度来讲,他们表示不报错,这是这个问题。嗯,然后呢,第五个问题。第五个问题的话呢,就是我们在代码层面呢,我如果去new一个像test view这样的一个结构,这个位置呢,仍然需要写一个contest。这个的话呢,其实一般用什么呀。Activity,那用application的话呢,可以吗?也可以,嗯,只不过这个时候这个application的话呢,就是生命周期体现为就是更长一些了,那用一个test view,一般的话呢,你像你用一个test view,它是一个视图啊,这个视图的话呢,会显示在这个布局上,那这个布局的话呢,我们说一定会是不是有一个activity去加载它了。
08:12
对吧,那那这时候呢,我们一般情况下呢,这个位置放一个activity t就可以。嗯,当然呢,我们说这个放这个application也行啊,所以这呢也写个二折都可,嗯,但建议。啊使用大家看PPT。其实这里边儿呢,他们都还行啊,就是你这个时候呢,用FTP呢,嗯,没啥问题,不会说造成所谓的内存泄露,因为呢。具体的,这个test的生命周期不会长于FTP的。最多呢,它俩一样,或者的话呢,你比我这个ITNT生命周期还要短,所以呢,不会存在内存泄漏的问题,那有一些内存泄漏的问题呢,就是说IT呢,必须得跟另外一个结构的关联,哎,结果呢,我it要退出的时候呢,由于你对的另外一个结构呢,还没有销毁,导致我这it呢不能够正常的被回收,导致它的一个内存泄露。
09:06
啊,就是关于内存泄露这块啊,其他的一些情景。买个六。嗯,其他情况下,嗯,这个如果使用activity。嗯,会造成。内存泄露的话。啊,建议替换为。Application。啊,就是我们说的这样一个情况,嗯。就是因为这个activity的生命周期呢是比较短的,嗯,当他试图去销毁的时候,另外一个结构啊,就是activity,它所依赖的这个activity哈,要销毁的时候呢,结果这个那个结构呢,还不能够销毁,导致它占用这个activityt啊,那这个RT呢就不能够销毁了,所以呢,就造成一个泄漏的问题,回头你还掉不了了啊,所以呢,我们就可以换成把它呢换成一个生命周期更长的啊,拿它来替换,这个呢,你正常该销毁还销毁。
10:08
啊,就没有这样的一个泄露问题,好,那关于他俩的选择的话呢,主要呢,就是这么六个点,嗯,大家看一下具体情况,我们应该选哪个啊就行了啊就这种情况的话呢,你写的时候呢,就稍微留意一点,倒不是说这种时候就完全不能够用了。也能用,就是出问题的话呢,你自己能够想到啊,是不是你当初给用成application,这要关注一下啊,有的时候呢,我们用嗯application呢,也挺方便的,这个I呢,经常的时候呢,发现这个参数啊还不太好找,得想着办法的一层一层的给它掉进来。啊,这是呢,是我们要注意的一个事情啊呃,那接下来的话呢,关于这个全部理财模块,这是我们具体的这个投资这一项里边下边呢是一个view配view配ER这块呢,又是由三个fragment所构成的,其中呢第一个呢就叫做全部理财,里边呢就是具体的一个呢,是一个跑马灯效果的一个文本,下边呢就是一个Li view,那Li view这块呢,使用的时候,呃,这这涉及到一个两个小属性的一个使用啊,以及呢分类型的啊,我们也简单的体会了一下。
11:14
然后通过这个例子的话呢,我们重点说的呢,就是关于啊单的一个抽取。啊,这里主要针对的是我们说的这个。呃,关于view当中,呃一个抽取的情况,我们说了三种不同的这个抽取方式,加上一开始没有抽取的,其实写的算是有四种。哎,就在我们这个data里边,呃,这是一种具体的啊,就是我们从来没有抽取过的,这呢是我们抽取的这三个层面。最后这个结论的话呢,我们在这个里边这也说到了啊。嗯,可以不充。哎,可以不抽,那就是最朴素的原来的我们这种写法建议的话呢,可以做一个抽取,哎抽取呢,回头我们在这个项目当中,如果你多次多个位置用到了list view,这样呢,你就可以直接呢,呃去自己定一个你需要的一个啊什么叉叉叉capture,呃,继承于你现有的这些,呃抽取的这个积累。
12:13
这样的话呢,代码结构呢,就更加的简洁一些啊,但是呢,你别选错了啊,哎,我们说呢,要么选这个方式一。啊,相当于是这种啊,对应的就是我们这个结构了。就抽抽取的这个层次呢,力度稍微小一点,但是呢还是可以用的。啊,其实这种方式说白了,我们这个待会是不是一共四个方案要抽签,哎,三个都大家写法都一样,所以就把这三个抽了,这个不一样的就暴露出来了。啊,就是抽取的层次呢,稍微低一些,那第二个这个方式有什么问题来着。哎,就是你这时候呢,你没负点造了,但是实际上没有用。那这个呢,我们讲过,主要呢,就是为了减少。哎,Find view by ID的这个次数呢,那你他没有用,那意味着这个次数呢就还是很多,所以这个优化方面呢,这个稍微差一些,呃,抽取的层次呢,比这个上边这个呢要好一些,当然呢,由于你这个优化没有考虑到,所以这种呢我们就不考虑了。
13:16
啊,那两个都结合起来抽取的力度高一些,同时呢,考虑到啊Li view的一个优化,这就我们说的一个方式四。嗯,这个呢可以用。啊,那就意味着以后在项目当中,如果呢,你多次啊,用到了这个this view,以及这个单ER,这个时候呢,你可以直接呢,就把现成的这个结构,还有就是这个结构直接给它拷出去。啊相在于这两个呢,你自己到时候现写也行,或者说呢,诶你就把这两个保存起来以后呢,在你项目当中直接粘过去用,针对于你具体的这个,嗯,是叉叉叉这个数据要进行一个装配了,然后你去造具体的叉叉叉和capture,让它呢去继承你这个,嗯,然后呢,现在的你再造一个holder,哎holder里边呢,涉及到两个事情,一个呢就是获取你具体的布局,第二呢,就是装备数据啊,都放在我们这个holder里边去做啊,你只需要去造这两个就行,那回头还有一套,你就再造一套什么什么holdder什么什么的这个大片啊,还有一套再再造,那都是使用这个这个鸡肋和我们的这个鸡肋。
14:22
就可以了啊,所以说呢,这个方式四的话呢,如果你自己也写了写,就是知道它的这个好处是什么啊嗯,下来呢,你也可以直接粘过去用啊就OK了。行,这是我们昨天呢,主要讲的这样的一个内容啊,那今天的话呢,我们就接着往下来说,那首先呢,来说一下这个关于这个推荐理财的叫随机飞入的一个效果,相当于也是一个自定义空间了,然后热门理财这也是一个自定义空间流失布局,诶把这两个我们可以做一下。啊,先停一下。
我来说两句