我有一个关于 Wakelock 的问题。在下面的情况中,Android 操作系统是否会释放 Wakelock(如果需要指定,则为 PARTIAL_WAKE_LOCK),以防止 Wakelock 被保留并浪费电池,直到关闭电源(而不是休眠)。
情况1-a: 应用程序在其中一个线程中获取了 Wakelock(没有超时选项),并设计了在关键任务完成时释放 Wakelock。应用程序可能会被任务管理器或臭名昭著的任务杀手杀死,并且应用程序无法让其线程释放 Wakelock。那个 Wakelock 会发生什么?
情况1-b: (如果情况1-a的答案是“是,请不要担心”,则请忽略此情况。) 与情况1-a相同,但应用程序向 Wakelock 给出了超时选项,比如3秒钟。这个超时选项还有效吗?
情况2-a: 请想象一下,有一个服务是通过 AlarmManager(通过广播接收器)启动的,并且该服务获取了 Wakelock(没有超时选项)。这个服务被设计为使 Wakelock 获取时间最短。但不幸的是,由于内存不足,Android OS 选择终止这个服务。(我不知道当 Wakelock 被获取时操作系统是否会杀死服务,但我猜操作系统不关心。但我希望操作系统稍后会释放 Wakelock。)那个 Wakelock 会发生什么?
情况2-b: (如果情况2-a的答案是“是,请不要担心”,则请忽略此情况。) 与情况2-a相同,但服务向 Wakelock 给出了超时选项,比如3秒钟。这个超时选项还有效吗?
情况1-a: 应用程序在其中一个线程中获取了 Wakelock(没有超时选项),并设计了在关键任务完成时释放 Wakelock。应用程序可能会被任务管理器或臭名昭著的任务杀手杀死,并且应用程序无法让其线程释放 Wakelock。那个 Wakelock 会发生什么?
情况1-b: (如果情况1-a的答案是“是,请不要担心”,则请忽略此情况。) 与情况1-a相同,但应用程序向 Wakelock 给出了超时选项,比如3秒钟。这个超时选项还有效吗?
情况2-a: 请想象一下,有一个服务是通过 AlarmManager(通过广播接收器)启动的,并且该服务获取了 Wakelock(没有超时选项)。这个服务被设计为使 Wakelock 获取时间最短。但不幸的是,由于内存不足,Android OS 选择终止这个服务。(我不知道当 Wakelock 被获取时操作系统是否会杀死服务,但我猜操作系统不关心。但我希望操作系统稍后会释放 Wakelock。)那个 Wakelock 会发生什么?
情况2-b: (如果情况2-a的答案是“是,请不要担心”,则请忽略此情况。) 与情况2-a相同,但服务向 Wakelock 给出了超时选项,比如3秒钟。这个超时选项还有效吗?