gpt4 book ai didi

java - 应用程序关闭后也经常运行服务

转载 作者:行者123 更新时间:2023-11-29 22:47:31 24 4
gpt4 key购买 nike

对于我的应用程序,我想在后台从服务器获取数据。当用户希望收到有关特定更改的通知时,我希望我的应用程序即使在应用程序关闭时也能继续获取数据。我正在研究这个主题,发现在应用程序关闭后连续运行服务的可能性也随着 Android Oreo 的改变而改变。我没有看到使用较新版本的 android 在后台处理运行服务的替代方案。我看到的最推荐的解决方案是使用前台服务。但由于我没有任何用户交互,我认为这个解决方案并不完美。我还阅读了有关 WorkManager 的信息,但不幸的是它的最小时间间隔为 15 分钟。除了前台服务和 WorkManager 之外,还有其他方法可以在后台持续处理数据吗?

最佳答案

您不需要“用户交互”来拥有前台服务,您需要的是在服务处于前台时无法删除的通知。

如果您的通知上下文是服务本身,则点击通知会将用户带到“设置”,例如,他/她可以在其中强制关闭服务)。

您可以在 BOOT_COMPLETED 广播接收器中启动您的 FG 服务。您必须快速(5 秒或更短)将其发送到前台,否则 android 将抛出异常。不幸的是,there's a bug谷歌认为它没问题并关闭为“不会修复”,但你仍然需要解决。

长话短说,在你的服务中有一个onCreate:


@Override
public void onCreate() {
super.onCreate();

final Notification notification = createNotification();
startForeground("SOME_UNIQUE_ID", notification);
}

你明白了(createNotification() 是你想要创建一个 Channel(如果 O+)+ Notification 的任何东西。

然而,这一切都很好,但它会一直运行一个服务,这可能不是你应该做的。

您可以使用警报触发更有效(就范围而言)的 Intent 服务来完成这项工作,安排另一个警报,比如 5 分钟,然后再做一次。

或者 - 如评论所述 - 您可以使用 Firebase 和通知来对更改使用react。

总而言之,这些都是选项。

我会说,除非你真的需要“实时”更新,否则 WorkManager 的 15 ~ 通常很好,如果你能处理你必须将代码设计得非常独立的事实,因为 WorkManager 无法接收很多信息,用在某些事情上很痛苦......

关于java - 应用程序关闭后也经常运行服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com