这几天都在头疼锁屏的问题,因为我要获取屏幕是否锁屏,并在onPause()里进行判断,可是广播发的太慢了,是在onPause()之后才发,而且不同手机发的时间还不同。
一开始的解决办法是在onPause()中延迟一段时间,再根据发出的广播判断是否锁屏,可是不同手机接收到广播的时间好像都不一样,而且同一个手机每次接收到广播的时间也不是一定相同,这么做会使得有些手机会有问题。
在网上找的一个解决办法,使用PowerManager
/**
* 得到屏幕状态
* @param mContext
* @return false表示锁屏
*/
public static boolean getScreenState(Context mContext){
PowerManager manager = (PowerManager) mContext
.getSystemService(Activity. POWER_SERVICE );
return manager.isScreenOn ();
}
这个比接收广播要早一点,而且不同手机好像得到的时间差不多
问题解决