我需要一些帮助来决定在我的应用程序中采用哪些类来满足这些要求:
我用AlarmManager编写了一个小型演示程序。 BroadcastReceiver了解所有这些是如何工作的。我已经研究过AlarmManager,BroadcastReceiver,WakefulBroadcastReceiver和JobScheduler的文档,虽然我理解这些差异,但我不知道哪一个会满足我的要求。
从文档中,我得到的印象是我可能需要编写应用程序的多个版本以适应它将运行的不同Android版本。这将是一场噩梦!
有关使用哪些课程的任何建议?我不想去一个给定的方向,后来发现我需要重写一切。
谢谢!
答案 0 :(得分:2)
您不需要多个版本的应用程序,只需要多个“调度程序”实现,每个实现只有几个文件,并且都调用相同的应用程序逻辑。
嗯,只有一个选项可以解决这个问题。你需要一个AlarmManager.setExact。强烈建议不要这样做,因为它往往会浪费电池。
每个选项都可以处理,只要你给它们不同的ID。
听起来您需要让您的警报调用Context.StartForegroundService,并让该前台服务保持运行,直到用户完成任务。再次,这是不鼓励的,因为它浪费电池。
AlarmManager和前台服务在所有版本的Android上运行,尽管启动前台服务的调用与Android O略有不同,概念完全相同。
<小时/> 虽然你的应用正在做一些需要立即执行的重要事情,即使屏幕关闭,你也应该抓住唤醒锁。唤醒锁可防止CPU自行暂停,以便您可以处理需要立即执行的操作。如果代码可以等到屏幕打开,那么请不要使用唤醒锁。 JobService始终抓取唤醒锁,因此JobService代码不需要获取单独的唤醒锁。如果您没有运行任何服务,包括JobService,那么即使您有一个唤醒锁,Android也会随机停止您的应用。因此,在进行任何重要工作时,您总是需要某种服务。