我是新来的概念是唤醒锁和需要你的帮助。

问题:

  1. 我想唤醒锁是一些类型的锁这时举行的执行代码可以防止设备睡觉。如果该设备已经在睡觉/备用方式,将执行代码吗?假设它不会获得一个唤醒锁?

  2. 当一个长期运行的任务(大约为7-8sec)是在一个背景线(人际关),我应该被打扰约保持一个唤醒锁?不际关已经获得它给我吗?

  3. 链接到正式文件和书面记录在唤醒锁表示赞赏。

谢谢。

有帮助吗?

解决方案

1.如果电话是在全睡觉模式中,除了一个进入的电话,你可以使用一个AlarmManager意图唤醒电话。

AlarmManager 类文件:

警钟经理拥有一个 CPU醒 锁定 只要警报接收机的 onReceive()法执行。此 确保电话不会 睡眠,直到你完成处理 广播。一旦onReceive() 返回,报警的经理发布 这唤醒锁。这意味着 电话将会在某些情况下尽快睡觉 作为你的onReceive()方法完成。如果你报警接收所谓 上下文。startService(),这是可能的 电话会睡之前 要求业务的启动。要 防止这个,你的BroadcastReceiver 和服务将需要实现一个 独立唤醒锁政策,以确保 电话中继续运行直到 服务成为可用的。

2.如果你的工作 人际关, 你将要发布的结果的用户界面上线 onPostExecute()

人际关 文件:

人际关能够适当和容易使用的螺纹。此类 允许执行的背景操作和发布结果的UI线 没有操纵线和/或处理程序。

3.我建议你有读取在官方文件 电源管理 它提供了一个很好的介绍,以唤醒锁概念。

其他提示

  1. 通常只代码将手机是睡觉是 BroadcastReceiver.实际上,电话醒来第二,运行 BroadcastReceiver's代码并且睡了。因为你不应该跑长的代码中 BroadcastReceiver (用于启动一个 Service 相反),就可以基本假设你的代码是从来没有运行的电话是在睡觉。当然,如果您使用的是一个 BroadcastReceiver 启动一个 Service, 你通常应该获得唤醒锁。

  2. 有一个 AsyncTask 发起了由用户,你真的不需要担心唤醒锁。这是不可能的话将会睡眠,而是运行。我不知道如果他们得到一个唤醒锁,但把我的手机来睡觉时运行的一个标准的 AsyncTask 似乎没有中断。

  3. 作为得钢说,检查了这一点: http://developer.android.com/reference/android/os/PowerManager.html

基本上唯一的时候你需要担心醒锁是当你希望你的任务被打断的睡眠(作为的情况下,如果你设置一个闹钟唤醒电话了简要地说)或者如果你真不能有任务的中断。否则,只是确保你们正常处理的任何中断。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top