00:00
好,这个完了以后呢,我们还是按照这个顺序来写啊,下边的话呢,我们就做这样两个操作,这个操作呢,其实也是我们前面讲基础的时候说到的啊,比如说连续点击两次退出当前应用。这是考察哪个知识点呢?嗯,考察汉德勒的也行,考察汉德勒了还有谁。哎,你连续点1.4,你这是不是相当于是一个k k event了是吧?哎,相当对K进行一个操作了啊,所以这块呢,就考察的这个叫哎K疑问的这个事件啊,以及呢,就是你具体处理的时候呢,我们用到了handle啊这样的一个知识点,行,下面呢,我们就来做一下。找到我们的这个m activity。嗯,我们这里边要做的话呢,嗯,我们看看啊,嗯,点击两次返回键,我们需要去直接在XT里边去重写方法。中间哪个方法。可以到啊,可以安排。
01:02
嗯,可以重写up是吧,呃,因为你是不是在按下去的时候呢,这时候其实是个倒事件,你是不是在那个抬起的,比如我这时候我这放到这其实没出去是吧?哎,你在起来的时候呢,我们让他去触发一下啊,所以我们这呢,哎可以考虑叫重写啊,On key up。哎,重写onca这个方法啊,说实现连续两次点击。啊,方可啊退出。当前应用。嗯,做这个事情啊,On up。感谢这个啊哟,我这写一哆嗦,把这个媳妇给干掉了。是有的是吧,嗯,这个还是挺重要的啊,要不一会还得补上,哎,我们的正常情况下呢,你说你这样,这这其实也要重叠,但实际上没有啥意义。
02:03
因为你这里边就光还是叫区块了啊哎,区块里边的话呢,呃,关键呢,就判断你是不是这个返回键啊,是返回键啊,这有这样一个方法,一点击一点击发现finish了。哎,销毁了我们当前的听力,所以在我们这里边儿,关键的就是这个方法不能轻易的让它掉。或者准确的说呢,应该是你连续点击第二次的时候,而且最好是两秒以上。对,两秒以内,那才让他调这个方法哈,行了,那我们就直接来写吧,这是我们讲过的一个知识点啊。怎么?一组k Co的等等于,所以用等等于是要敏感啊,我基本属于类型,那你也没有E。那其他的那些引用类型,你看是用等等啊,还是用ES啊,想清楚。K等等于K,嗯,K对K点。是吧,是返回键啊,那你如果是返回键。
03:03
嗯,如果我这里边儿呢,先return一个true。啊,那就相当于他永远也退不出去了。啊,那现在呢,就是第一次点击的时候呢,走这个,第二次点的时候走这个,那就保证你第一次点击以后,第二次再点的时候就不让他进去。所以我们这呢,是不是哎,Poor类型flag,哎,我比如说我写个出吧,好一开始是个处行CTRLC,我在这呢,加上一个且吧。哎,就这样啊,那就意味着我们第一次点击的时候是一个返回键,不是返回键,当然就永远都是这个啊,这就不说了,哎,是一个返回键,同时这还是个出,所以就进来了。按照这个处return一个。啊,这写个处对,但是我们这儿呢,要改一下这个。Flag的值改成false。嗯,目前我们这种做法。
04:01
当用户第二次再点击。它已经是放了,所以这个就进不去了。哎,是不是直接呢,就走这了,哎就走这儿,所以我们这呢,你可以再加上一个to啊,说再点击一次退出当前应用。先跑一下。好这这样,然后点击一下啊,再点击一次退出当前应用,目前呢,无关于时间。哎,跟时间没关系,你就是歇一个小时,你再点它也能出去。啊好,所以说下面呢,我们要处理一下关于这个flag的一个问题啊,如果你超过两秒钟了,我就把这个flag呢,再改成一个出。那所以我们就可以发送一个延迟消息,对吧?哎,延迟消息呢,我们做呃,两秒以后的这样的一个还原的操作,所以我们在这嗯,习惯上写上面,那我就我就写这吧。
05:05
行就是吧,啊用一个ha。讲一下啊好,这个handle ctrl c,我们在这个位置啊,说发送延迟消息。啊,使用我们这个hundred.send一个empty message delayed啊,这个我们可以起个名字啊,比如叫what。嗯,还原。发言怎么说?Be。还原叫re,有写reset吧,Reset这个back这个这个操作啊,返回键的操作,嗯,行,然后呢,延迟时间就两秒钟。嗯,这么着啊,然后把它out,或者直接我直接这样一伸,它就一般的就给我整到最上面了。这个一吧。对呀,你要看着方便,你就看出X。
06:01
拿到下面。看这好在这里边位SMSG.what哎,如果你是它。行,那就意味着啊,你这时候呢,就是一个关于返回键的一个操作啊,我把这个flag。改成一个什么呀。该怎么处?啊,这就相当于是复原啊。那意味着就是如果你在两秒钟之内,嗯,点击的这个还是一个back啊,那这时候我这个还没有执行,所以呢,你还是个false,所以就执行这个了,那如果超过两秒钟了,意味着我这个延迟消息就执行了啊延制线一旦执行出来了,又变成出了,那又又又跑这边了。啊,就这样操作啊。那这样还不行。啊,我们是不是还要避免出现内存的泄露啊,啊,为了。
07:02
避免出现。内存的泄露啊,需要在嗯,哎,Destroy这个方法中。怎么着啊,移除所有。啊,未被执行的这个消息啊,On第。在这里边,我们来一个handler。那这个其实就两种了是吧,哎,我们艺术消息有两种写法啊,一种呢叫remove。哎,Messages,你指明你当前这个消息就是它。啊,因为我们这里边也没有别的消息是吧,这叫啊移除。啊,指定ID的所有的消息。啊,注意这个指定ID这个消息不一定就一个啊S,比如我们这呃,当然我这是在这里边啊,我就呃要是有机会的话呢,我要能好几次都操作他,你像我们讲这个基础课的时候呢,啊,你是一下子可以发送好多个这个同一个操作这个消息的啊,所以只要你是同个ID,有可能有很多个啊,那都移除掉。
08:13
这个呢是操作的方式一。那那我们这个也可以不调查啊,因为在这个问题中就这一个消息,那如果要有其他ID的话呢,哎,我们可以是不是移除所有的消息啊,刚点remove,哎,Call back and messages。嗯,这个方法F2说,如果这个行三是no,就所有的都除掉。干脆。我脑。啊,移除所有的啊,未被执行的消息。行,那我们就写这个操作啊。那这个内存泄露还记得是谁的泄露吗?啊,是你这个handle在我们当时演示的时候,是是说什么呢?就是呃,如果我们在这个里边呢,是不是加了一个log呀。
09:07
当时我们演示的时候。呃,演示的时候呢,发现就是如果两秒钟之内,用户点了两下,点两下出去了,结果发现这个是不是还执行了。那说明这个哈德兰没有被移除掉。嗯,它没有被移除掉,它没有移除,那依赖于它就是呃,它所依赖的这个对象叫activity,所以呢,就是泄露,是不是这activity没有被删除掉,所以我们必须保证在呃on这个方法里边,就是当用当这个需要销毁这个activityt t的时候呢,呃把这个行的这个消息都移除掉,这样的话呢,这个STG跟他就都能够正常的被销毁,否则的话呢,这个就被销毁。泄露了。在运行。啊,点击好,我们这呢,让它超过两秒钟。
10:03
啊,这这个执行了啊,所以超过了,然后再点击不行,然后呢,赶紧再点一下。就出去了,那这时候呢,就没有再执行,就是刚才那会儿那个哈。啊,这呢,就没有内存泄露的问题。嗯,好,这个呢,我们是做了点连续点击两次退出的啊,用到了哈德,其实你要不用也行。啊,这个我就不写,大家想啊。嗯,你点第一下,点第一下的时候。我能不能记录一下当前用户点的时候的这个时间啊。是不是记录成一个变量。那用户再点第二去的时候呢,是不是又可以记录的时间,是不是看这个时间差,这个时间差如果是没超过两秒。呃,没超过两秒的话呢,两次点的时候时间没超过两秒,是不是就让它直接这个超过两秒了。超两个是不是先出一下。然后呢,再把你点第二次的那个操作,是不是又给第一个那个开始第一次点的那个时间。
11:06
晕了没?嗯,第一次点记录的时间,第二次点记录的时间,看这俩时间差超过两秒。嗯,没超过两秒,没超过两秒就直行这个让他出去。超过两秒呢,超过两秒把这个二是不是就当成是一,那负个一,然后你再点第三下看这俩时间。哎,不用哈德也可以做。
我来说两句