#app切换到后台一分钟后锁定,需要输入手势密码才能打开(程序锁)

解锁规则:

  1. 未设置解锁密码,则什么都不用输入即可进入应用
  2. 1分钟内再次回到应用,无需输入密码、手势密码等即可进入
  3. 超过1分钟后回到应用,需输入手势密码即可进入

涉及到的点:

  1. 手势密码
  2. 如何判断app切换到后台和切换到前台
  3. 时间点的把控
  4. 通过广播通知打开手势密码解锁界面

逐一突破:

  1. 手势密码用了开源的项目

    • https://github.com/sym900728/LockPattern
  2. 判断app是否切换到后台和前台

//应用前后台切换的判断registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {@Overridepublic void onActivityStopped(Activity activity) {Log.v("viclee", activity + "onActivityStopped");count--;if (count == 0) {timeStart = new Date().getTime();Logger.d("切到后台-->"+timeStart);}}@Overridepublic void onActivityStarted(Activity activity) {Log.v("viclee", activity + "onActivityStarted");if (count == 0) {Logger.d("切到前台");long timeEnd = new Date().getTime();Logger.d("时间差"+(timeEnd-timeStart));//切换到前台和切换到后台的时间差大于等于10sif(!isLock&&BaseApplication.isPassportLogin&&timeStart!=0&&timeEnd-timeStart>=1000*60){isLock = true;//app被锁Intent receiver = new Intent();receiver.setAction("GO_LOGIN");sendBroadcast(receiver);}}count++;}@Overridepublic void onActivitySaveInstanceState(Activity activity, Bundle outState) {
//              Logger.d("onActivitySaveInstanceState");}@Overridepublic void onActivityResumed(Activity activity) {
//              Logger.d("onActivityResumed");}@Overridepublic void onActivityPaused(Activity activity) {
//              Logger.d("onActivityPaused");}@Overridepublic void onActivityDestroyed(Activity activity) {
//              Logger.d("onActivityDestroyed");}@Overridepublic void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//              Logger.d("onActivityCreated");}});
  1. 时间点的把控

    1. 淘汰的想法:我开始想的是用服务,当app被切换到后台时候,开启服务计时,实现完毕后,觉得考虑到性能还有耗电量的问题,就放弃了
    2. 每当app切换到后台时候记录一个时间,当切换到前台时候,把当前时间和切换到后台时候记录的时间比较,这样来判断,具体参考上面代码中的
  2. 通过广播通知打开手势密码解锁界面
public class ForegroundTaskReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {//切换到前台了if(intent.getAction().equals("GO_LOGIN")){watchStack();}}/*** 监控任务栈*/public void watchStack() {byte[] getsurePassword = ACache.getInstance(BaseApplication.getContext()).getAsBinary(SPUtils.getString(BaseApplication.getContext(), "phone", ""));//有手势密码  &&  超过1分钟if (getsurePassword != null && getsurePassword.length > 0) {Intent intent = new Intent(BaseApplication.getContext(), LockHandPasswordLoginActivity.class);// 服务或广播中打开Activity,需要设置此参数intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);BaseApplication.getContext().startActivity(intent);Logger.d("打开手势密码解锁接界面");}}
}

##demo下载地址
demo下载地址

app切换到后台一分钟后锁定,需要输入手势密码才能打开(程序锁)相关推荐

  1. Android app切到后台 返回首页,Android 如何保证App切换到后台,或页面跳转后,重新打开APP、或返回之前页面时,维持其状态不变...

    项目中遇到的一些小问题,记录.分享一下. Android 如何保证App切换到后台,或页面跳转后,重新打开APP.或返回之前页面时,维持其页面状态不变? 1.问:当APP启动后,打开某一界面,然后点击 ...

  2. APP切换到后台时的运行规则以及如何实现后台运行

    正常情况下,使用应用时,当用户按下home键,APP便被挂起(线程和runloop都会暂时挂起),但是依然驻留在内存中,这种状态下,如果不使用苹果允许的那几种一直在后台运行的方法(如播放音乐.定位等) ...

  3. excel 双击 计算机,Excel 2016双击文件打开后是空白,再次双击才能打开(或者通过文件,打开才能打开)...

    问题描述: 直接双击excel文件打开后是空白的,几乎所有功能都无法使用.但是再次双击该文件能够打开,或者通过文件 --> 打开的方式才能打开. 虽说能够打开文件,但是对于咱们这种追求完美的人来 ...

  4. Excel 2016双击文件打开后是空白,再次双击才能打开(或者通过文件,打开才能打开)...

    问题描述: 直接双击excel文件打开后是空白的,几乎所有功能都无法使用.但是再次双击该文件能够打开,或者通过文件 --> 打开的方式才能打开. 虽说能够打开文件,但是对于咱们这种追求完美的人来 ...

  5. android 杀死程序收不到推送_Android APP切换到后台接收不到推送消息

    1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 android原生系统用home键杀进程可以起来,如果是强行停止就只能用户自己手动 ...

  6. 计算机桌面锁定了没设密码怎么解锁,电脑桌面锁屏怎么设置,电脑怎么给手机解锁...

    现在很多的人在生活中的时候都会使用到电脑,可以这么说,现在人们无论是工作.学习还是娱乐. 都已经离不开电脑了. 我们在生活中的时候会出现一个情况,就是有时候会有事情需要离开电脑一会儿. 但是电脑里面又 ...

  7. 输入远程计算机地址后,不提示输入用户名密码直接进入计算机怎么回事,解决Windows远程桌面连接每次都提示输入密码的问题...

    Windows  远程桌面连接几乎每天都用,所以使用的方便性非常重要.如果你经常用,也许会发现在某些系统中,每次连接都需要输入密码,即使已经保存了密码,并且密码是正确的也是如此. 这个问题是策略设置的 ...

  8. ios9定位服务的app进入后台三分钟收不到经纬度,应用被挂起问题及解决方案

    原来定位服务是10分钟收不到定位信息就挂起定位,现在变为最短3分钟,估计都是为了省电吧.只要你开启应用的后台定位,并且10分钟有一次定位,那么苹果就不会关闭你的线程,现在变成3分钟.若你的应用开启了后 ...

  9. python输入错误提示再次输入_Python实现用户登录并且输入错误三次后锁定该用户...

    实现用户登录并且输入错误三次后锁定该用户 我的测试环境,win7,python3.5.1 提示输入用户名,和密码 判断是否被锁定 判断用户名和密码是否匹配 输入错误三次,账号被锁定 思路 代码块 na ...

最新文章

  1. django restfull centos6.5 x86_64 python2.7
  2. python3循环遍历嵌套字典替换指定值
  3. 【python数据挖掘课程】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取
  4. 在.NET3.5平台上使用LinQ to SQL + NBear 创建三层WEB应用
  5. ASP.NET MVC中如何在客户端进行必要的判断
  6. 【君义精讲】高精度计算
  7. Building Web Parts for Microsoft SharePoint Products and Technologies
  8. 为何超四成人反感大数据应用
  9. android webview设置和遇到的坑
  10. ODI知识模块--IKM Oracle Incremental Update
  11. Python—爬取全国城市名称案例(Xpath方法)
  12. 昌平二中2021高考成绩查询喜报,北京2021高考成绩排名榜单,北京各高中高考成绩喜报...
  13. Temporal Action Proposal
  14. 30. Python------(面向对象练习)搬家具
  15. 百度地图 开启 绘制 功能(画圆)
  16. Linux学习2_Sinno_Song_新浪博客
  17. 哈理工 校赛(热身赛)2238 围巾的纠结(判断回路问题)
  18. CCIE自学-by闫辉NP视频:QoS小结
  19. 计算机组成原理——操作数寻址方式
  20. java关闭页面6,Selenium Java关闭浏览器

热门文章

  1. 中小板、创业板、新三板和科创板之间的区别
  2. 拼多多关键词搜索采集商品数据接口,拼多多分类ID搜索采集商品销量接口,拼多多上货接口,拼多多商品列表API接口
  3. java中根据权重随机获取数据
  4. 彻底关闭华为手机系统更新教程!防止系统自动更新!最详细教程!
  5. win10html5无法播放,Win10网页视频无法播放提示启用adobe flash player
  6. 艾司博讯:拼多多价格竞争力不足怎么办
  7. 机器学习-57-Unsupervised Learning-09-More about Auto-Encoder(无监督学习之更多有关自编码器的介绍)
  8. 程序员必做50题的解答
  9. linux 文件恢复 软件,EasyRecovery轻松实现Linux数据恢复
  10. 三星android se干啥得,结果竟然这样!看iPhone SE与最强Android旗舰三星S7对比!