-
WakeLock机智
WakeLock是android系统中一种锁的机制,只要有进程持有这个锁,系统就无法进入休眠状态。应用程序要申请WakeLock时,需要在清单文件中配置android.Manifest.permission.WAKE_LOCK 权限。
根据作用时间,WakeLock可以分为永久锁和超时锁,永久锁表示只要获取了WakeLock锁,必须显式的进行释放,否则系统会一直持有该锁;超时锁表示在到达给定时间后,自动释放WakeLock锁,其实现原理为方法内部维护了一个Handler。
根据释放原则,WakeLock可以分为计数锁和非计数锁,默认为计数锁,如果一个WakeLock对象为计数锁,则一次申请必须对应一次释放;如果为非计数锁,则不管申请多少次,一次就可以释放该WakeLock。以下代码为WakeLock申请释放示例,要申请WakeLock,必须有PowerManager实例,如下PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE); mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "Fota"); mWakeLock.acquire(); mWakeLock.release(); -
PowerManager中的WakeLock
要获取、申请Wakelock时,直接通过PowerManager的WakeLock进行。它作为系统服务的接口来供应用调用。
获取WakeLock对象获取WakeLock实例在PowerManager中进行。
在应用中获取WakeLock对象,方式如下:PowerManager.WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG);应用中获取wakelock对象,获取的是位于PowerManager中的内部类——WakeLock的实例,在PowerManager中看看相关方法:

最低0.47元/天 解锁文章
1502

被折叠的 条评论
为什么被折叠?



