Android WakeLock使用的一个注意点

先看看下面这个函数写的有没有问题?

public void wakelockTest(Context context) {
    PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK, "awakelock");
    wl.acquire();
}

其实是有问题的,定义的变量wl是一个局部变量,在java里,函数调用完了,由于这个局部变量没有被引用了,就会被GC回收,这样休眠锁就被释放了,就起不到锁的效果了。

正确的做法是,将PowerManager.WakeLock wl;定义在函数外面。

你可能感兴趣的:(Android,WakeLock)