关于 Activity 劫持,上篇已经说过,为了解决这个问题,在网上查看了许多别人的文章,得出的结论是只能提示用户,但不能阻止 Activity 劫持的发生(可能有其他方式),在这里,我就对实现提示用户的方式来分享我的实现过程。
分析
首先,我们想要做到的功能是:当用户打开的 APP 后,在自己没有操作的情况下,APP 被动的被运行到后台,这个时候,我们需要提示用户“某某 APP 已经运行到后台”。
其中要实现的功能点是:
1.怎么检测 APP 运行到了后台;
2.区分是用户自己操作运行到后台还是被劫持之后运行到后台。
3.提示用户
实现
检测 APP 是否运行到后台
此方法写在我是用在 BaseActivity 中的 onStop() 方法中,当 APP 运行到后台的时候,在onStop() 方法中判断是否是在后台运行了。(BaseActivity 是我自己封装的一个基类 Activity)
区分是用户自己操作运行到后台还是被劫持之后运行到后台。
Android 手机中,要将当前打开的 APP 运行到后台,需要按 Home 键,所以这里需要写一个广播来监听是否是按了 Home 键之后进入了后台。
提示用户
此代码是在 onStop() 方法中,第一层判断是为了检测是否运行到了后台,第二层判断,是检测是否是用户主动进入到了后台,如果是用户主动进入到后台运行,则不 Toast 。
总结
在做这个功能的时候,开始只考虑运行到后台就提示,没有考虑到用户主动的行为。之后又在 Toast 的时候发现,在小米手机,Toast 不管用,只能使用了一个别人兼容小米手机的ToastCompat。
两篇文章的时间相隔有一个月左右,当时是因为要赶一个项目,中间又有国庆,然后就没有时间来把第二篇文章发出来,之后就有点懈怠了,实在惭愧。之后我会把代码上传到 Github ,如有指教,欢迎留言私信,一起进步。
想看看的同学可以搜索 abigbread 同名 GitHub abigbread2018
觉得有用的点个赞,给个关注哦。
^_^
网友评论