我读到我应该打电话给你
startForegroundService(intent)如果我想正确启动可以作为前台服务运行的服务。但是,如果我想让它开始的时候没有前景服务,但可能会成为以后的服务,我应该怎么想呢?关于我们现在是如何得到它的信息:
我们有一个应用程序,它使用一个服务来执行许多任务。当用户在前台与应用程序交互时,它会执行所有这些任务,但取决于用户是否启用了某个功能,我们希望在后台继续执行这些任务。因此,当应用程序启动时(显然在前台),我们将使用
startService(intent);当应用程序转换到后台时,我们检查是否启用了该功能,如果启用了,则运行startForeground(id, notificiation);,它有效地将不可移动的通知添加到操作系统中,并且服务继续运行。当应用程序返回到前台时,我们称之为stopForeground(true)。如果未启用该功能,则服务将永远不会设置为前台服务,而且我们也不会尝试在后台执行这些任务。
所以我的问题是:是否足以获得“完整的前台服务性能”?还是我因为不打电话给startForegroundService(intent)而失去了一些东西?我的印象是,我们确实有一个完全工作的前台服务,但是当我读到foreground services must be started using startForegroundService(intent)的声明时,我感到很困惑,而我们并没有这么做。如果我们真的需要使用来使用startForegroundService(intent),我能想到的唯一解决方案就是最初启动服务的一个正常实例,当应用程序进入后台时,我们使用startForegroundService(intent)启动一个新的实例。但是,我们是否需要这样做,还是在使用startForegund(id, notification)的服务上运行startService(intent)足以实现前台服务?
注意:,我发现的一个不同之处是,如果应用程序本身在启动服务时处于后台,那么我需要startForegroundService(intent) for API >= 26。在我们的例子中,我们总是在应用程序处于前台时启动服务。但是,我确实记得在一些情况下,当我们尝试使用startService(intent)启动服务时,我看到了一个异常,不知怎么的,这个应用程序(非常罕见)仍然认为它是后台的(也许是在应用程序启动时,操作系统上出现了一些东西)。因此,如果我捕捉到了这种情况,我可以运行startForegroundService(intent)来启动服务。但是,当应用程序返回到前台时,可以在该服务上运行stopForeground(true)吗?或者,既然我们是这样开始的,那么它一定会永远是前台服务吗?
https://stackoverflow.com/questions/60336015
复制相似问题