Android WakeLock使用的一个注意点

Android WakeLock使用的一个注意点先看看下面这个函数写的有没有问题?publicvoidwakeUpTest(Contextcontext){PowerManagerpm=(PowerManager)context.getSystemService(Context.POWER_SERVICE);PowerManager.WakeLockwl=pm.newWakeLock(PowerManager.FULL_WAKE_LOCK,”awakelock”);wl.acquire();}.

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

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;定义在函数外面。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/35701.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注