首先声明,下面的方法仅仅是一种取巧的方式。
home键在不修改底层代码的情况下是无法屏蔽的,home键的点击并不会触发onKeyDown方法。他与back键不同。这个应该是google为了android系统安全考虑吧。
但是我们常常看见有些应用,当点击home键后,会有notification出现,比如QQ等
不知道QQ代码是怎么写的,不过应该与本人的方法大同小异。
主要思路:利用activity的生命周期来判断home键。
1.程序需要打开的每个activity创建一个状态标志,标志当前activity是create、start、resume、pause、stop还是destroy。
2.在程序每打开一个activity时,把该activity实例保存到一个list中。写在onCreate方法中。
3.重写activity的每个生命周期方法,更改状态标志值。
4.在每个activity的onstop方法触发时,去遍历list中的所有非本实例的activity状态。如果都为stop,那么可以认为是home键点击。
缺点:
1.当然,上述方式在接到电话、打开短信时也会触发,所以也不能做到真正的home键监听,只是范围变大了。
2.如果程序是多个task则会很麻烦。
3.需要考虑横竖屏切换带来的list数据不对的问题。
希望对大家有帮助