看门狗

androidstudio期末复习(挖穿Android第五十八天)(1)

轮询获取最近的task, 如果发现是加锁的,跳EnterPwdActivity

androidstudio期末复习(挖穿Android第五十八天)(2)

重写返回事件,跳转到主页面

androidstudio期末复习(挖穿Android第五十八天)(3)

发送广播,看门狗跳过检测

androidstudio期末复习(挖穿Android第五十八天)(4)

相关优化

知识拓展:看门狗后台一直在运行,这样是比较耗电的。

我们要优化的的话怎么做呢?

在看门狗服务里,监听锁屏事件,如果锁屏了我就把看门狗停止(flag = false;);屏幕开启了,我就让看门狗开始工作启动服务并且flag = true;;

避免一次输入密码了不再输入;防止别人在我使用的时候,接着使用不用输入密码的情形;

也可以在锁屏的时候把mSkipPackageName赋值为空就行了。

利用activity启动模式修复密码输入bug

1. 演示bug(进入手机卫士,按home退到后台,然后再打开加锁app,进入后发现跳转到手机卫士页面)

2. 画图分析,正常情况下的任务栈和bug时的任务栈图;

3. 解决问题;在功能清单文件EnterPwdActivity加上字段

<activity android:name="com.itheima.mobilesafe.EnterPwdActivity" android:launchMode="singleInstance"/>

4. 然后再画图分析正确的任务栈;

隐藏最近打开的activity

长按小房子键:弹出历史记录页面,就会列出最近打开的Activity;

1. 演示由于最近打开的Activity导致的Bug;

2. 容易暴露用户的隐私

最近打开的Activity,是为了用户可以很快打开最近打开的应用而设计的;2.2、2.3普及后就把问题暴露出来了,很容易暴露用户的隐私。比如你玩一些日本开发的游戏:吹裙子、扒衣服这类游戏。你正在玩这些有些,这个时候,爸妈或者大学女辅导员过来了,赶紧按小房子,打开背单词的应用,这时大学女辅导员走过来说,干嘛呢,把手机交出来,长按一下小房子键,这个时候很尴尬的事情就产生了。

A:低版本是无法移除的。低版本记录近8个;想要隐藏隐私,打开多个挤出去;

B:4.0以后高版本就可以直接移除了。考虑用户呼声比较高。

3. 设置不在最近任务列表显示activity

<activity android:excludeFromRecents="true" android:name="com.itheima.mobilesafe.EnterPwdActivity" android:launchMode="singleInstance" />

4. 在装有腾X管家的模拟器演示腾X管理的程序锁功能;也没用现实最近的Activity,它也是这样做的。

腾讯管家和手机卫士同时加锁对比

腾讯手机管家会更快一些, 所以我们需要再进一步优化手机卫士。

1.缩短每次巡逻时间

//将100改为20 try { Thread.sleep(20); } catch (InterruptedException e) { e.printStackTrace(); }

2.不频繁调用数据库

从数据库中读取所有已加锁应用列表,每次从集合中查询判断

mLockedPackages = mDao.getInstance(this).findAll();// 查询所有已加锁的应用列表 // if (mDao.find(packageName)) { // 查看当前页面是否在加锁的数据库中 if (mLockedPackages.contains(packageName)) {}

3.监听数据库变化, 更新集合

androidstudio期末复习(挖穿Android第五十八天)(5)

,