Android 广播接收器,即使在应用程序关闭时也能正常工作

Android 广播接收器,即使在应用程序关闭时也能正常工作,android,android-broadcastreceiver,android-8.1-oreo,Android,Android Broadcastreceiver,Android 8.1 Oreo,我有一个关于广播接收机的问题。我有一个应用程序,需要不断地接收动作时间,以刷新时钟部件。我实现了一个前台服务,其中包含一个监听该操作的BroadcastReceiver。但在android oreo上,启动服务的唯一方法是将其作为前台服务启动,这意味着向用户显示一个持久的通知,通知用户应用程序正在后台工作。 我不想向用户显示该通知。我试图在应用程序类中实现BroadcastReceiver。但这是行不通的。有时广播接收机不工作,有时工作正常。即使工作正常,如果从最近的任务中删除应用程序,Broa

我有一个关于广播接收机的问题。我有一个应用程序,需要不断地接收动作时间,以刷新时钟部件。我实现了一个前台服务,其中包含一个监听该操作的BroadcastReceiver。但在android oreo上,启动服务的唯一方法是将其作为前台服务启动,这意味着向用户显示一个持久的通知,通知用户应用程序正在后台工作。 我不想向用户显示该通知。我试图在应用程序类中实现BroadcastReceiver。但这是行不通的。有时广播接收机不工作,有时工作正常。即使工作正常,如果从最近的任务中删除应用程序,BroadcastReceiver也会停止工作。有没有一种方法可以在不使用服务的情况下使用无限期工作的BroadcastReceiver

有没有一种方法可以在不使用服务的情况下使用无限期工作的BroadcastReceiver

操作\u时间\u勾选
的情况下:否,因为您不能使用清单声明的广播接收器

因为您不愿意使用前台服务,所以您可能需要调查。在这种情况下,这是最大化服务运行时间的唯一方法:允许系统在因资源不足而停止后随意重新启动它。当然,这意味着您的时钟可以在任意长的时间内停止更新


请注意,您的问题并不局限于Oreo(Oreo不要求您成为前台服务,但它确实对您不在前台时可以做的事情施加了某些限制)。即使在早期的OSs上,如果您不是前台,系统也会将您视为淘汰的首选。

小部件中的
TextClock
有什么问题?您不能使用带有文本时钟的自定义字体。我的widget有点复杂。我已经使用了START\u STICKY,但这无助于在终止时重新启动服务。我正在使用一个间隔为2分钟的重复alarmManager,它会再次启动服务,即使它没有被终止。但是alarmManager也不起作用。有些设备需要关闭电池优化功能才能让服务正常工作。但这不是一个好办法。一个普通用户不知道如何关闭电池优化,他只是想要一个能按预期工作的应用。事实上,如果你在START_STICKY上陷入困境,它应该在服务死机时重新启动——当操作系统感觉到它的时候。就我个人而言,我从未见过它起作用,但其他人却看到了。我认为这个故事的寓意是,“你不能做你想做的事”,至少在股票Android上是这样。