Activity生命周期监听接口:ActivityLifecycleCallbacks

本文介绍了如何通过实现ActivityLifecycleCallbacks接口来监控Android应用的生命周期,以满足特定需求,如在App后台超过一定时间后,重新打开时需要用户验证指纹或手势密码。通过对比基类BaseActivity的方法,阐述了ActivityLifecycleCallbacks的优势,并详细讲解了其配置和使用步骤。

1. 需求场景

项目遇到新需求:给App设置指纹解锁或者手势密码解锁,例如,App切换至后台或者进程关闭,时间如果超过20sec,App再次切换至前台或者重新打开,要让用户验证指纹或者手势密码,验证通过的话才能进入home页,当然,具体的时间长短,后端可配。

2. 方案分析

记录App切换至后台或进程被杀死的时间点是解决问题的关键点一,假设这个时间点是T1;记录App再次切换至前台或者重新打开的时间点是解决问题的关键点二,假设这个时间点是T2。只要能准确的记录T1和T2,上述需求就迎刃而解(假设后端配置的时间间隔为timeSpan)。
if (T1-T2>timeSpan){
    // 超时,验证指纹或者手势密码
}

3. 监听T1和T2的基本思路

(1).写一个基类BaseActivity,所有新创建的Activity全都继承基类;

(2).在基类中定义一个int变量activeNum,记录当前存活的Activity个数;

(3).回调基类的onResume()方法,activeNum就加1,回调基类的onStop()方法, activeNum就减1;

(4).当activeNum的值减到0,说明App进入后台或者被Kill,记录时间点T1并保存.因为App不同页面间切换都会走onResume(),所以在记录时间点T1的同时,保存一个标记checkTimeFlag, 置为true,这个标记用来判断下次调用onResume()时是否为T2时间点

(5).在基类的onResume()方法里获取并判断标记checkTimeFlag,true的话,获取App切换到前台或者重新打开的时间点T2,检查是否超时,超时的话,将标记checkTimeFlag置为false并验证用户指纹或者手势密码;

(6).配置的时间间隔timeSpan可以在启动页从后端获取,每次走启动页的时候刷新一次,当然个别场景会有些延迟,例如,用户从页面A进入后台,timeSpan修改了,但是用户切回前台,判断时使用的timeSpan还是上次的,不是修改后的,这种场景不走启动页刷新timeSpan,如果非要实时的话,其实可以把接口请求写在onResume()里,获取T2之后,请求接口获取timeSpan。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值