BroadcastReceiver即使关闭应用程序也能正常工作

时间:2018-10-12 17:35:59

标签: android android-broadcastreceiver android-8.1-oreo

我有一个关于BroadcastReceivers的问题。我有一个需要经常接收ACTION_TIME_TICK意图刷新时钟小部件的应用。我实现了一个前台服务,其中包含侦听该操作的BroadcastReceiver。但是在android oreo上,启动服务的唯一方法是将其作为前台服务启动,这意味着向用户显示持久性通知,通知该应用程序正在后台运行。 我不想向用户显示该通知。我试图在Application类中实现BroadcastReceiver。但这并不能正常工作。某些广播广播接收器不起作用,某些运行良好。即使运行良好,如果将应用程序从近期任务中删除,BroadcastReceiver也会停止工作。有没有办法使用不使用服务就可以无限期工作的BroadcastReceiver?

1 个答案:

答案 0 :(得分:0)

  

有没有一种方法可以使用不使用服务就可以无限期工作的BroadcastReceiver?

对于ACTION_TIME_TICK:否,因为您不能使用清单声明的BroadcastReceiver。

由于您不愿意使用前台服务,因此您可能需要研究START_STICKY。在这种情况下,这是最大化服务运行时间的唯一方法:由于资源不足而被停止后,允许系统反复任意地重新启动它。当然,这意味着您的时钟可能会在任意长时间内停止更新。

请注意,您的问题不仅限于Oreo(Oreo并不要求您成为前台服务,但是如果您不在前台,则确实对您可以执行的操作施加了一定的限制)。即使在较早的操作系统上,如果您不是前台,系统也会将您视为淘汰的主要候选人。