相信在网上有很多关于如何监听锁屏的方法,其中比较多的是利用广播进行监听锁屏事件,虽然利用广播进行监听是可以获得锁屏事件,但是其中是存在弊端的,其实比较好的监听锁屏的方式不应该利用广播,为什么这么说呢。
首先广播是系统级的,也就是系统中任何一个apk程序都可以接受到这个广播,这样问题就来了,比如你利用广播进行锁屏监听处理一些线程的时候,比如屏幕关闭停止一个子线程,屏幕亮的时候再开启这个子线程,当然在你的应用里面跑是没什么问题的,但是,当home键或者消息推送过来使得当前你的程序到后台跑了。这个时候打开其他的程序,再进行锁屏操作,你打开log会发现你的子线程也会因为接收到广播被启动了,这样你的程序就无形中消耗手机的内存。
其实正确处理锁屏事件还是得应该从activity的生命周期进行处理,因为无论是锁屏还是home键,程序都会按照activity的生命周期进行,
不知道csdn出什么问题了图片变黑了,有需求的大家自己在网上搜下activity的生命周期。
从图,锁屏的时候actvity会走onpause和onresum这条线路,要对锁屏进行处理的朋友在onpause添加相应的黑屏操作,onresum添加开屏操作
总之我觉得利用广播进行监听的方式是存在问题的,只是给大家在用的时候提个醒