00:00
然后还有一个什么问题呢,就是也是面试里边呢,就是经常会在笔试里边出一些选择呀之类的问题考察的哈,算是第九个问题吧,就是不同的啊,生命周期方法。嗯中嗯常做哪些操作啊。啊,这个说的有点绕啊,或者换句话说,就是我们比如说他一问到就随便问一个比方耗子啊。里边你要是写这个,重写这个方法,你一般干什么。哎,可能就梦到说一般不重写是吧。啊,有人还没重写过这样一说,感觉经验比较少啊,哎,在这里边呢,就提到这些方法呢,我们一般要干什么啊。哪些方法呢,我们需要去重启,那就需要你对这些方法呢有一个认识了啊。嗯,这些方法认识的话呢,比如说像我们提到这个on create吧。呃,这个呢比较清晰啊,啊,我们说它呢,这个对象创建的时候才会调,就调用这一次啊,所以我们在这里边一般肯定会写这个方法了。
01:07
哎,你去加载你对应的这个布局文件啊,以及我们说视图的一个初始化。呃,整个这个视图的一个初始化,然后呢,呃,比如说你还有设置一些视图,绑定一些监听。啊,这不都在这儿写吗。啊,像这些操作呢,我们就写一次就够了,嗯,即使呢,你这个it回头进行了,进行到一个stop的状态了。虽然你死到了,但是你这个ftd对象没有销毁,所以呢,你这些视图也都在,既然视图都在,之前也绑过解停在又到运行状态,没有必要再绑,所以就依次搞定啊,就写在on great里边啊,那对应的话呢,我们这个on destroy。嗯,这个呢,就相当于是在你最终这个消亡的时候是吧?啊或者这个理解为我们正常的啊,正常情况下。
02:02
啊,销毁啊,一个activity对象之前。呃,调用,嗯,那这里边呢,你可以我们像原来写的那个像移除消息啊是吧?呃解绑你这解除册,你一个广告接收器啊嗯,对啊,像这些操作我们都是写在on体操里边啊,在这我写了一个点数叫正常情况下。那就是我们自己主动去销毁一个it TP的时候呢,它会调这个on Detroit方法啊,但是呢。看一下我们这个表。找一下听听。这是什么周期?在这个图里面啊。哎,但是啊,但是我要说什么呢,这个方法的话呢,不是销毁一个ITV的时候呢,都会掉。能看到吧。
03:01
哎,你看这里边儿,这不还有一条线是在这儿吗。呃,我在这直接,呃,系统就帮我们回收掉了,就是有可能你这个内存不足了是吧,那有更高的优先级的这个需要内存了,你这个内存还不够,那我就有可能是不是销毁当前的TP。那在销毁的时候大家看啊,销毁的时候呢,发现他,嗯,好像从这就是执行完onto以后哈,呃有可能过去,那执行完on house是不是也可能过去啊,那说明这是两条路径都有可能要执行的。那G呢,就是UN stop好理解,就是这是一个it t1,然后呢,你你又启动个新的把它给盖住了啊叫it t2,那那这个时候呢,如果内存不足的时候,你后边看不着的那个啊,就是在onto以后啊,系统呢,就帮我们把它给移除掉了,就不占用内存了啊那这个A1呢,实际上已经死了,但是他的死呢,是系统帮我们移除的,它没有掉on destroy。啊,没有调零方法啊,你也你也看不出来说他死了啊,只是呢,当你在返回的时候呢,是不是系统呢,发现你当前马上要用了啊呃,优先级又比较高,是不是再帮你从头再造一下。
04:11
那一直到这儿再重新再显示一下。啊,是这样子的啊,那你再重新显示一下的,这个时候呢。因为刚才用户A1里边可能会有一些数据嘛,那你这个数据又重新显示,那你这个数据是不是得加载一下啊。加载的话呢,那你在呃死之前,你那些数据是不是应该临时该保存得存一下啊。这个逻辑能绕过来吗?啊,你不能把这个A1给干掉以后呢,然后用户一回来一早发现这个数据刚才里边有点,现在没有数据了。那被用户就发现了是吧。嗯,就是我一回来呢,跟刚才那个应该都一样啊,所以呢,你需要呢,在这些里边呢,应该得把刚才那些数据呢,得得弄过来啊,那先别说回显回来了,你先说你出去的时候你得保存吧。啊,那这里边就涉及到了,呃,他不光是这种情况会出现还有这种情况,我这是一个it t1,然后呢,我们比如说我就诶点了一个用了一个这个新的itp啊直播这IP比较小啊这样子的,那这时候我们这个A1呢,是一个on PS是暂停的啊,那暂停的时候呢,我们其实能看到E1。
05:18
但这里边儿要跟你说的就是,他既然能从这儿走。那说明这时候的A1是有可能也死掉了。也就是说你虽然能看到一,但是呢,只是维护了一个。就是对一个镜像一样是吧,你能看到它,但实际上这个对像已经挂掉了啊,那你这时候一点返回键A1又看到了,但实际这里边儿也得考虑到你之前那个A1上面这些数据呢,还得重新加载过来。那基于这样两种情况,那你想一想,我们涉及到这些数据的保存到哪。是不是只能写这里啊?你说我写悼词的婚礼?那onto里着这种方式,你是不是还没来得及调,Onto就已经走了?
06:00
是吧,呃,所以呢,就是呃涉及到如果说我们这个界面呢,呃,从运行状态要进入其他状态了,那如果说用户需要有一些临时数据需要保存,哎,那我们优先考虑是不是写到on POS里面啊。啊,这个我们可以在这写一下啊。啊,就是当这个activity。嗯,相当于它呢,叫结束运行状态时。啊,那么呃,一些临时数据的啊。哎,这个保存我们就写在这啊,原因呢,说了为什么不能写在onto里,就是因为他有可能不走这个onto。啊,所以就直接走了啊,嗯,这是这个事情,然后另外呢,就是虽然说写到它里边,但是这个呢还不保险,或者说呢,这得具体问题具体分析啊,有时候这一句话不能,呃不能就是放到哪都能用啊,这个ons呢,它的使用呢也有局限性,它呢就不适合。
07:03
啊,这个去保存这个,呃,叫什么数据量比较大的操作啊,或者要不适合执行。啊,数据量。嗯,较大的这个保存操作啊,比如说呢,你这个数据库的操作啊,我这一出去,我把这个数据呢,写到数据库里边说不建议写到这儿。为什么?嗯,他不建议写这一这他就建议你,你要么写到unsto里,或者诶还有没有别的方法可以考虑。啊,为什么不建议啊,Resume,那是用回写啊是吧,因为在那个销毁之前保存一下,那时候再回写啊是吧,这时候是说保存这一块啊。那为什么不建议写到这儿呢?这个刚才我们那会儿演示的时候呢,看到了这个问题了啊,我点一下启动这个界面的时候。哎,这里边我们发现,嗯嗯。
08:00
这个调的不大对哈。啊,就是我们刚才不是调过这个事情吗,就是。On PS,我通过一启动二的时候啊,On PS完以后是不是二加入了三个方法。呃,然后呢,是不是才执行的may的这个方法呀。啊,那你想想,如果我要把耗时的这个操作写在这里边了。那是不是意味着你点了一下这个按钮,用户呢,要启动新的,然后这个新的这个按钮始终这个界面出不来啊,因为你占用的时间太长了。所以导致这三个操作呢,得等了好长时间才出来。那你是不是用户尽尽可能的,我们说你这个系统优化的好,我一点一下很快就出来了,那感觉优化的好是吧,所以你像这种一点击,你就不能让他延迟太久啊,所以这里边儿呢,不要写时间太长的操作了。那你说哎,那是不是就得写这啊,那不行就得写这了。啊,或者说我们这里边呢,还有一个方法啊。就是我们在这个may芽天气里边还有一个这个方法,On save instance state。啊,这个有时候面试的时候呢,这个选项里面会出现这个操作啊,这个方法,那这个方法又是个什么,我们跑一下。
09:17
啊,这个呢,是进入我们这个界面了啊。嗯,这怎么还没打印呢,清掉了,然后现在呢,你看我点击启动页面二啊。嗯,好,启动页面刚才的时候呢,是pose完以后执行这仨方法,哎,就有个它,然后我们现在把刚才这个one instance data打开啊,它在这调了一下。哎,那你是不是可以考虑呢,就是写在这个位置啊。哎,所以这个位置呢,也可以用于保存这些数据啊,它的执行时间呢,可以来稍微长一点。比你这个可以长一点的哈。哎,可以写到这里边啊,这是我们所提到的这样的一个方法啊。
10:00
哎,他呢,执行这个数据呢,可以时间稍微长一些啊,也是用于保存数据的啊。行,这是这个保存数据了,然后这个保存完数据以后呢,嗯,我们说嗯,你是需要回血吗。嗯,回显的时候呢,是你看要是这个on PS的时候呢,回显到这儿啊,那你这块这个这个的时候呢,是回显的时候呢,是经过这个。啊,这里边儿呢,相当于这两个方法里边是不是就可以考虑去把你保存那个数据再重新加载进来。那就可以在这两个里边去写了啊。行,这就是我们说的这样的一个事情啊。啊,就相当于是把这几个方法呢,我们简单的再提了一下,你看哪些方法里边适合做什么啊,这个其实他能写,这个onto呢也能写,当然这块写的时候呢,呃,当然一般情况下,这个内存不足的时候直接呢,呃,在一个类似于这样的一个情况下,还把后边这个给移除掉的,暂停时候还移除掉,这个情况一般是少一些啊呃,但是总之一点就是你不能说为了这样,然后为了保证数据一定能存存过来,然后呢,就非得在这里边写,耗时的操作,这个体验是很差。
11:07
啊,所以呢,就是嗯,就时间执行比较长,那就是在这里边,我在这里边去保护啊,这个执行时间较长。行,那通过这个呢,就基本上面试里边会问到的这些点呢,就都说了啊。嗯。下来捋顺一下。
我来说两句