WakeLock & WifiLock的实现
转:http://www.asiteof.me/2011/02/wakelock-wifilock/
在android中,申请WakeLock可以使进程持续执行,即使进入睡眠模式,进程的执行也不间断,而且能保持屏幕常亮。
WifiLock跟WakeLock用法作用与WakeLock相同,不过前者是针对Wifi的而已。
SMS Backup中关于WakeLock以及WifiLock的代码如下:
private static void acquireWakeLock(Context ctx) {
if (sWakeLock == null) {
PowerManager pMgr = (PowerManager) ctx.getSystemService(POWER_SERVICE); //保持当前进程持续有效
sWakeLock = pMgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
"SmsSyncService.sync() wakelock.");
WifiManager wMgr = (WifiManager) ctx.getSystemService(WIFI_SERVICE); //保持wifi有效
sWifiLock = wMgr.createWifiLock("SMS Backup");
}
sWakeLock.acquire();
sWifiLock.acquire();
}
用完一定要记得释放锁:
private static void releaseWakeLock(Context ctx) {
sWakeLock.release();
sWifiLock.release();
}
而且要注意在AndroidManifest.xml中注明wakelock权限的申请:
<uses -permission android:name="android.permission.WAKE_LOCK"/>