Java 使BroadcastReceiver在API 26或更高版本的后台工作

Java 使BroadcastReceiver在API 26或更高版本的后台工作,java,android,android-studio,android-fragments,Java,Android,Android Studio,Android Fragments,我最近问了一个关于我制作的一个应用程序的问题,我在清单中注册了它的BroadcastReceiver,这是API级别26及以上所禁止的。我收到了很好的答案来帮助解决这个问题,其中之一是我在活动本身中声明了BroadcastReceiver,意图过滤器和注册就在那里以编程方式完成 这是我问题的链接: 我在之前制作的一个类似的应用程序中这样做了,但我这样做的目的是在应用程序运行时不检测振铃器模式的变化,而是在应用程序未运行时收听这些变化,这意味着一旦系统广播启动,应用程序的特定活动就会启动因此,我

我最近问了一个关于我制作的一个应用程序的问题,我在清单中注册了它的BroadcastReceiver,这是API级别26及以上所禁止的。我收到了很好的答案来帮助解决这个问题,其中之一是我在活动本身中声明了BroadcastReceiver,意图过滤器和注册就在那里以编程方式完成

这是我问题的链接:

我在之前制作的一个类似的应用程序中这样做了,但我这样做的目的是在应用程序运行时不检测振铃器模式的变化,而是在应用程序未运行时收听这些变化,这意味着一旦系统广播启动,应用程序的特定活动就会启动因此,我想知道如何做到这一点,即,如果我无法在清单中注册接收器,则使广播接收器在运行API 26或更高版本的设备中接收系统广播。

顺便说一句,我在运行Android API level 25的设备上测试了该应用程序,它运行得非常完美,只是我正在寻找一种新的API替代技术

但在应用程序未运行时收听,这意味着一旦系统广播启动,应用程序的特定活动就会启动


对于未打开的广播,您需要有一个前台服务,该服务通过
registerReceiver()

为这些广播注册。您能否详细说明执行此操作的方法过程?此外,一项服务不会比广播接收器占用更多的电池吗?@Akibahmed:“你能详细说明一下这样做的过程吗?”——请解释一下你不明白的地方。例如,中介绍了前台服务。“一个服务不会比广播接收器占用更多的电池吗?”--不会,但它会占用更多的系统RAM。当系统广播振铃器模式的变化时,前台服务的使用是否会在应用程序未运行时启动应用程序?@AqibAhmed:如果您的前台服务正在运行,这意味着您的应用程序已经在运行。要接收这样的隐式广播,您的前台服务需要一直运行。这在一般情况下是很难实现的,这意味着你的应用程序将一直消耗系统RAM。但是没有其他方法可以解决这个问题吗?我的意思是,在API 26之前,我喜欢简洁,但这似乎没有它本应具有的效率。