我是WakeLock概念的新手,需要你的帮助.
问题:
我假设WakeLock是某种类型的锁,当执行代码保持时,它会阻止设备休眠.如果设备已处于睡眠/待机模式,那么代码会执行吗?假设它永远不会获得WakeLock?
当在后台线程(AsyncTask)中完成一个长时间运行的任务(abt 7-8秒)时,我是否应该为持有WakeLock而烦恼?AsyncTask是否已经为我获取了它?
我们赞赏官方文件的链接和唤醒锁上的文章.
谢谢.
1.如果手机处于完全睡眠模式,除了来电之外,您可以使用 AlarmManager Intent 来唤醒手机。
来自AlarmManager类文档:
只要警报接收器的 onReceive() 方法正在执行,警报管理器就会持有CPU 唤醒锁。这保证了在您处理完广播之前手机不会休眠。一旦 onReceive() 返回,警报管理器就会释放此唤醒锁。这意味着在某些情况下,一旦 onReceive() 方法完成,手机就会进入睡眠状态。如果您的警报接收器调用 Context.startService(),则手机可能会在启动请求的服务之前休眠。为了防止这种情况,您的广播接收器和服务将需要实施单独的唤醒锁定策略,以确保手机继续运行,直到服务可用。
2.如果您正在使用AsyncTask,您将需要将结果发布到 UI 线程上onPostExecute()
来自AsyncTask文档:
AsyncTask 可以正确且轻松地使用 UI 线程。此类允许在 UI 线程上执行后台操作并发布结果,而无需操作线程和/或处理程序。
3.我建议您阅读Power Manager的官方文档,其中对WakeLock概念进行了很好的介绍。
| 归档时间: |
|
| 查看次数: |
5089 次 |
| 最近记录: |