00:00
好,这完了以后,我们接着再回到这个思维导图啊,大家写的时候也是啊,就照这个思维导图这个顺序往下写就行,嗯,再往下的话呢,我们这儿呢,要提供一个叫APP manager啊。或者说再准确点,其实是一个activity的一个manager。嗯,Activity manager系统里边实际上有一个类就叫activity manager了。所以这呢,我们换了一个名哈,叫APP这个manager了,嗯,就是相当于我们整个应用啊,你在执行过程当中啊,Activity的一个容器。就装我们这个it t体的啊,啊这里边就涉及到装it t,我们传统的,或者我们讲安讲这个安卓基础的时候,我们说it t啊,在整个这个内存空间在保存的时候使用的这个结构。是不是叫任务站啊,哎,叫站结构啊,就是来一个itt放在这儿啊,再来一个再往上放,再往上放,再往上放,然后出的时候呢。是不是这个要先除啊。哎,所以我们整个的这个关于站的呢,是一个,呃,关于这个activity呢,是一个站的结构啊,提到这个站的这样的一个数据结构。
01:07
啊,这个呢,就是相当于是一些复习了啊,啊这样的这个特点,先进后出啊,正因为它有这样的特点,所以我们把它说成一个叫受限制的一个线性标。啊,它是个线性表啊,就是这样的,看成是叫一位一啊,前一个后一个,前一个后一个这样啊,这个线性表有限制,限制就在于它只能从一头进来。啊,这个是封死的这一头,所以呢,就理解成是先进的后出来,或者叫后进的先出来,对这是一样的意思啊,哎,只能够从表的一端进行插入和删除啊,注意只能是一端。然后这个叫占顶顶。啊,这个叫占底啊包层。啊,比较top是吧,哎,入站出站这样一些基本的一些概念啊,那就像是一个水缸一样,就只有一个口啊,这呢是我们说的这个it t t的一个站结构啊,然后我们这里边呢,相当于没有使用系统给我们提供的这个呃站结构,我们自己呢,其实也使用了啊,只是说呢,我们在它使用之外呢,我们自己又维护了一个站结构。
02:14
啊,这就是我们创建这个APP manager这样一个类的一个意义啊,就是系统呢,其实它还自动的帮我们去创建那些activity啊,它也自动的还有一个站,只不过我们这里边儿呢,再提供一个,那为什么非得要再提供一个。就是方便我们自己去管理啊,比如说啊,比如说呃,我们这呢是一个STT,比如说大家的就是比如你在银行里边哈,做一些这个交易的时候,呃,到最后呢,需要支付了,呃当你一点击这个支付操作的时候呢,它提示你说你还没有。啊,比如还没有注册吧啊,那没有注册,那下一步我们得去注册吧,那你注册的话呢,可能一个界面不行啊,他需要你注册好几个界面,一个界面一个界面,一步一步的好多啊,那注册到这个界面的时候呢,这是最后一步啊,点击一下这个提交,我就注册完成了啊。
03:07
啊,那我要点击注册完成的时候呢,你想我们是不是一注册完成希望呢,又回到你最初支付的这个界面,该支付了呀,啊那这个时候的话呢,你是在这个基础上要再重新纳一个新的activity吗?跟他一样的。肯定不是是吧,啊,你要完全一样的话呢,你这个数据还都得取过来,再的话呢,是没有必要的。啊,所以呢,我们这儿呢,哎,不能这样做哈,你需要做的呢,是把这些一个一个的都销毁掉啊,嗯,然后呢,就让他把这个给它露出来就行。那这种时候呢,就涉及到你关于这个FTT的一个管理了,我一点击的时候呢,诶,我可以让他呢,这个时候帮我把这几个这几个诶都销毁掉。啊,当然我们这里边儿还可以有那种叫launch mode是吧,那你适当的时候呢,把它设置成是。哎,就是single task就在当前站里边呢,就是只有一个啊,一点击啊,这些都销毁掉。
04:03
啊,那也是一种方式啊,也是一种方式,哎,我们这里边儿呢,就是通过哎我们在这个位置的时候呢,我一点击它,我呢就让它把这几个都销毁掉,这呢就涉及到我们就可以提供这个站的管理器啊,这管理器里边让他把这几个都干掉啊类似的一些操作呢,我们都可以这样去做,所以这就是我们提供这样一个类的一个意义。啊,提供它的一个意义,好,那这里边儿呢,我们就做一下啊。啊,也是在我们这个common下边。嗯,你叫一个activity manager也行,实际上呢,主要放的就是activity啊。反正我换个名也可以。哎,TT manager除了叫APP manager也行。啊,我们主要呢,就做这样的一些事情。啊,就是提供站的FTT的一个管理啊呃,这里边呢,提到这个类呢,嗯,没必要给他造很多个了啊,一个应用我们就给他造一个就行,然后所有站呢都维护到这一个管理器当中,所以呢,它是一个单立的。
05:10
啊,那首先呢,提到它是单立的,那我们就可以呢,呃,提供一个单利模式啊。嗯,那单利模式我们有几种啊,两种是吧?哎,我们这呢写一个。高函是吧。回忆一下还记得不啊,首先呢,嗯,私有化扩到七。哎,这样,然后呢。那提供一个私有的静态的,是不是当前一个对象呀。Activity manager,哎嗯,Activity manager啊啊,那饿汉式呢,是就是一上来就把它先造好呀,哎,这就是先造好了,然后呢,只需要提供一个。是不是公共的方法去访问?
06:03
哎,直接我们在这里边return一下activity。啊,这呢,就是我们说的这个鄂汉室啊。回一下,你看你不会写的这个,你再熟悉一下这个面试的时候呢,嗯,就是。让你手写,这是必须会的啊,基本功了。那这个完了以后呢,下边我们去提供它相关的关于htt的一些操作了啊,涉及到HT的添加删除啊,删除指定的,删除当前的所有的,呃,返回站的大小等等,那你这些呢,都基于它得有一个容器啊,我们这个容器收到了就是一个站啊,那这个站我们得去提供一下啊,Private一个。啊,Stack啊,这个stack里边呢,就是来放activity的,然后叫activity的一个stack啊NEW1啊stack。行,这呢,相当于我们提供了一个占的对象啊。
07:03
那接下来呢,我们对于这个activity t这些操作啊,有这样的一些,我们就都是在这个站里边做操作了,首先第一个添加一个activityt到我们这个站里边啊,我们写个public啊,那就是个word吧,我们叫个at啊,添加谁添加我们一个activity。那把它填到我们这个站里面,那这里边我们就可以添下来的,可以判断一下啊,说如果你这个it呢,是不等于no的啊,那我们这呢,就把你来填到我们的这个。Activity的一个step当中。哎,它这里边直接有个爱的方法啊,哎,把它加进来就行。哎,这就是个添加操作。好,然后接着你就照这个啊,就是删除指定的FT。呃,像我们刚才的这个操作啊,就我们说的,呃,当我们最后呢,都注册完了以后啊,我希望一点击的时候呢,呃,回到一开始这个支付的一面,中间这些呢,都销毁掉,那相当于我们就把你这些IP,你可以声明写到里边,我一点击把这个指定的这几个全删掉,那就是这样的一个操作啊,那这里边public。
08:17
O的做一个remove啊,删除指定的。哎,删除谁就删他。嗯,就删它,也就是说呢,在我们整个这个站里边啊,整个这个站里边,嗯,比如说这样呢,是我假设这个ST几个一吧,啊,这也是一个一啊。有好几个一,然后我现在想删的呢,也是这个一。啊意意思呢,就是你这个站空间里边,凡是嗯,就算是什么一样的都删呀。他这个里边还不是说我就删了个对象是吧。你要就删这个对象的话呢,那就是我就看一下谁跟我等等是不是就可以啊。
09:04
啊,这里边我还不想练,我就想凡是你是同一个activity的类创建的全删掉。S。也也不太合适。ES的话呢,你比较它的属性,那就是必须还得是同个属性啊。嗯,应该是,就是我看你是不是同一个类创业的吧。对吧,就是只要你是同一个类创建的,我这都把你们给删掉。啊,那个我就比较的是什么呀,他们的是不是那个get class啊。是这意思吧,啊,该class只要该class一样我就都删掉啊,就要删除指定的,那删的时候呢,大家想一想,那那就是全变利一遍呗。是吧,那前面一遍好,那你看我这样写啊。啊for循环,然后I等于零,I小于,这个站呢,也有一个方法叫size。
10:06
啊,那就相当于是从头到尾便利一下啊,说一旦发现啊,我们这个站里边,我我这呢可以提前先取出来啊,这个占里边呢,我们可以获取指定这个位置上的这个RTP。啊,这叫我这叫current。啊,取出指定类位置上的activity啊,一旦发现你当前这个activity呢,它点get class。啊,如果这个类是吧,哎,如果它呢,Equals你行三给的这个他的一个get class。啊,那你这个哥们儿不能是闹是吧?那这块也可以加个衣服啊啊,如果这个it啊稍等。那的啊,然后把这些呢,都得放在这里面啊。啊呃,如果他俩这个类是一样的,那这时候呢,我们就把这个你现在的这个位置就把它给移除掉呗。
11:06
哎,我们就相当于是做这个事啊,就是activity这个sta点啊,做一个remove啊remove就写I就行是吧?啊这个呢是表示从占空间。啊,一除。其实有点像,你可以就就像好比这个list里边一样啊啊移除掉了啊,这个移除的话呢,同时我们再加上一个操作,就是呃,当前的这个activity啊。啊,或者我们这叫啊current这个点,我得让他来一个这个finish啊。就让他呢,也做一个销毁。那销魂。啊,当成了这个PPT,相当于就是让它从界面上消失啊,不再去显示了啊,同时呢,从站里边也移除掉啊行,那就这样写呗。这样写的话呢,大家其实要想个事儿哈。
12:03
他其实有一些问题,这样写法。啊,你看你能不能猜出这问题在哪呢?提示一下啊,就是这种便利方式的写法有问题。啊,那个不对啊,这个那内容是啊,这个我直接这个调get也行,这不就一个一个便利吗。呃,这个有时候还挺难发现站点,站点怎么了?嗯。哎,对哈,哎,尤其到站点的说长度在变化,其实这个都是对的啊。哎,就是靠近这个问题的本质了,你看啊,哎,我们这种方式啊,就是在站点的时候呢,其实容易出问题也不止站点了啊,长度变化这个事呢,也是比较对的啊,我们这个size不固定啊,我这呢放着一个两个三个四个五个六个就依次往上放了啊,比如说呢,我们要删除某一个it去了。
13:09
删的时候发现第二个跟它一样。类型类是一个类啊,那我就要把二给它删掉了是吧,我把二呢,直接做了一个木二一干掉整个三是不是就整个往下移了,它整个就移三就移到这了啊三移到这,但是我们你看我这时候你移完二以后呢,紧接着A加加你这个指针是不是开始该移这个数了。但以这个数的话呢,你刚要去一趟,他就已经整个往下错了,是不是四跑这了,相当于这个三是不是就给忘了呀。对吧,那说我这来个减减,那减减呢,有的时候呢,我要没闪。没删你还不能减点。那就再加个判断是吧,那就写的就越写越复杂了,就啊啊可以就是你要是删了的话呢,让他简简一下是吧。这是一个问题哈,再就是我如果还是这种情况,我们接着往下说哈,嗯,接着往下说的话呢,假设我已经是删到。
14:06
这了,嗯,别删到这了。应该是删这个是吧,哎,我现在呢,把五呃一判断五跟它也一样,把五给删掉了,五一删六是不是就掉下来了,六一掉下来你马上这个,你这个size这时候没有变哈,你是不是就往上一指,就这时候找了个空的了,哎控制帧了就可能直接就报异常了。啊,就这块儿也容易出现问题哈,所以这时候这样写不太好。底规用不着那整就麻烦了啊,其实就刚才这个谁说的,就是说我检减一下,你要是移除了,你就减减一下,这就行是吧,或者说呢,我们还有另外一种写法啊,怎么能够很方便的就把这个问题解决掉呢?哎,倒着便利吗?
15:00
T3.s减一想想。我从后往前,这样是不是就可以了?嗯,谢谢你。哎,你看这还是这样的一个序列啊,其实这就像个小算法一样了啊,哎,我这呢,我先取这个,比如说刚才说的这个是六啊,呃,取六啊六假设没事哈,取五啊五假设就是我要删的,我把五给删掉了,五删掉以后六就掉下来了。我不管你掉还是不掉,我反正我下一个是不是减减该死了。你掉不掉,反正跟我也没啥关系,我就接着判断,死了。那这个时候你就接着往下掉掉掉掉,你说你看这时候是不是没有任何问题啊。哎,所以就倒着边上。哎,这也相当于是一个小技巧啊,哎,没有谁说非得便利就一定得是政治便利的。根据需要啊。
16:00
至于说这个要插一句,我就想起来另外的一道,就是微软当当时的一道考题了啊。这是一个小插曲啊,嗯,这个考题是这样的,就是我随便呢给一个数组啊。嗯,正负这个都都无所谓啊。嗯,好,给这个数组完了以后呢,我现在想这样,我想让呃,这个数组的每一个位置上的这个数呢,去乘以嗯首位的这个数。嗯,除以这个首位这个数,那意味着自己12除12就一了,那三除12呢就零了。就得到还是个in的形的哈,那44除它呢。三是吧,啊三啊就这样啊,就让每一个位置上这个数呢,去除以首位,得到一个新的数组来写这样的一个操作。挺,还挺简单,这不挺简单的吗?是吧。那你想咋写啊?我遍历一下,遍历的时候呢,我就从前往后遍历。
17:04
啊,让每一个位置呢,取第一个,呃,取这个相应这个位置上的这个数数据,然后呢,除以一下这个第一个位置,啊得到的呢,等于这个新的还是这个I这个位置,那你一上来第一个位置除以第一个位置。就把第一个位置给他。是不是占出个一了就。能听明白吧,就是你一上来你是不是就是比如这个数组I吧,你是不是就除以这个,这个数组不是零嘛,那然后得到的不就是这个AI嘛,那你第一个I是不是就取的是零啊,I0,这就是I0除以零,这不就一嘛。这个一就当你这个新的值了,那后边这个数再除的时候,是不是一个个都没变,那不白除。那就他就说,哎,那我这后定一个临时变量,然后把这个12我取出来是吧,这每次就除以那个临时变量就行。啊,那样可以,那或者呢,我是不是就倒着开始便利啊,那从后一个去除它这个除它这样的话呢,你不就最省事了。
18:04
啊,这是一个技巧是吧。啊,这个呢,我们就删除指定的这个T体。啊,下边这个要删除当前的啊。Remove current。那这个呢,你就不用参数了,就是谁在这个站里边的最上边,我就把谁删掉啊。就这个意思,嗯,那这个删法呢,那就挺多了哈,你可以,嗯直接呢,我们通过这个activity stack点,我先获取一下它这个位置位置,那就是你整个activity STa.size减一,这不就是你最上边的这个元素吗?哎,把这元素呢,先获取到,然后这个元素呢,我们先让它做一个finish啊,它自己是个销毁,然后呢,呃,我再通过it step点,哎,我做一个remove。
19:03
哎,Remove你也可以通写个ID,也可以写一个具体的一个对象啊呃,你要remove这个ID的话呢,就是又是它点3X减一。这些。对吧。啊,这就是一个移除操作啊,嗯,这你可以看成是一个方法一吧。嗯,还有一个呢,就是直接他还有一个现成的方法。啊,这个it t sta呢,它有一个就是叫last element啊,这直接呢获取到就是绝活元素啊,所以我这直接这样就简单一点啊,啊先类试一下,然后哎,通过这个start点哎,Last啊或已经有它了啊。啊,直接呢,就这个XT,它点做一个,哎不对。他得是掉了一个sta点人摸一下是吧,哎,从那个站里边进个移出,这样行啊。好,这是哪种方式都可以啊,这个比较简单啊,接着啊,删除所有的it地址。
20:15
嗯,他avoid remove,那也不用参数。都删掉。都删掉,那那就不管你是谁,就全遍历一遍呗,是吧,那这个是不是还是倒着变的呀。啊,In特I等于t sta点4X减1I大于等于0I点。啊,对,今天。好,那直接呢,我们就先获取一下啊,Get指定I这个位置上的这个activity。嗯,然后这个呢,做一个finish。啊销毁,然后it step点啊做一个remove啊,你再把这个it给他remove掉。从后往前全变了一遍,就全删了。
21:02
嗯,注意啊,这里边这个操作一个是finish,一个是木啊,一个是销毁它的显示,一个呢是从这个站里边给它移掉,这两个都加上啊。嗯,再接着。嗯,返回站的大小,这个比较简单。那这个我们就要size啊,那直接就return一下activity sta点方法可以了啊。宝宝最爱我。直接通过对象角啊。行,这样的话呢,我们这个activity manager这个类呢,我们就写好了啊,那写好以后的话呢,那你不就得用一下吗。啊,用一下,比如说我们这个mayi tty啊,我在创建的时候,我们这是个onre的方法啊。嗯,写这了,那on create方法里边说s select0是显示第一个啊这呢我们是加载,那我们在这呢可以。
22:04
哎,谁写一下啊,说将啊当前的啊,这个我们那个I。哎,添加到我们的这个啊艾。Activity manager中。啊,这呢,我们就可以通过刚才这个类activity manager.get instance点做一个ADD this。对吧,然后呢,同样的把它CTRLC啊粘到我们的挖口。在这是吧。那就可以了啊。嗯,那这个welcome这的话呢,我们这儿还有一个就是你这有个销毁啊。这是不是销毁了,那销毁这块呢,其实我们是不是可以这个慢点get in.remove一下。是写这次啊,这次不写写这个。And my this对吧?
23:02
哎,这个水木里边呢,是不是已经有这个分裂式了。啊,所以这块呢,你就把。嗯,那他是不是可以就是上一点就行了。是从。啊,或者这个两方面啊,叫结束啊,Activity的显示啊,然后并从站空间中移出。来保存一下啊,这样的话呢,相当于我们这个嗯,Activity manager,或者叫APP这个manager我们就给他提供好了,后续我们再用的话呢,就比较方便了。啊,就是我想移除这些activity这个你你也没法调系统啊,我们就直接呢自己调我们现实这个维护啊,所以这里边的话呢,你得清楚一点啊,就是系统这个该有还有。只不过我们又造了一个。啊,就是系统呢,自动的往里帮我们找对象,它自动去维护,我们这儿呢,顺便又再造个也来维护啊,那也来维护的话呢,我们就可以很方便的,就是我不想要哪个了,直接一移除这个,一移除它这块也就会跟着引移除了啊相当于间接的我们通过自己这个呃,占空间的管理器呢,去操作系统的这些I。
24:14
啊,这就它的一个意义啊。
我来说两句