本文基于Hongyang大神的博客:http://blog.csdn.net/lmj623565791/article/details/36236113
转载请注明来源:http://blog.csdn.net/u013258802/article/details/53079019
界面和样式的调整参考前三篇,本文目的是简单介绍下手势密码的具体应用。
每个APP的设计都不同,支付宝是在主页的“我的”tab页显示的时候唤起手势密码,QQ是任何页面从后台进入显示时都会唤起,还有些APP是退到后台一定时间之内(例如两分钟)不唤起手势,第一种很好做就不说了,这篇文章讲后两种设计。
要实现全APP内手势密码验证,主要考虑两种情况:
1、刚打开APP或者从后台切入或者息屏,需要手势密码验证;
2、APP内界面跳转过程,不需要手势密码验证。
Activity的生命周期就不提了,上述两种情况都会走到onResume()方法并检测是否开启了手势密码验证,关键在于该过程是否是APP内部的页面切换过程,是的话onResume()中就需要跳过手势检查,理清了思路,问题就好解决了。
略过闲杂方法,Activity A 到 B 的切换过程如下:
A:onPause();
B:onResume();
A:onStop()。
可见关键点就在这三个方法中,我们从带时间的手势唤起方案说起。
一、APP退到后台超过一定时间(暂定60秒)后唤起手势:
需要一个全局变量 lockTime 贯穿整个APP使用过程,该变量在启动APP时初始化为0,退出APP时置0;
在 BaseActivity 的 onResume() 方法中取当前时间 sysTime - lockTime,获得差值 durTime;
刚打开APP时 durTime 必定大于 60*1000ms,一定会显示手势密码;
在 onPause() 方法中保存当前系统时间 lockTime = sysTime;
下一次调用 onResume() 时会再次判断间隔时间 durTime,页面跳转时间必定小于 60s,不显示手势密码。
根据以上设计我们可以大致确定要做的事和需要的类: