【发布时间】:2018-12-27 22:11:06
【问题描述】:
我正在开发跟踪用户上班和回家方式的应用程序。应用程序基于小部件(向用户打印信息的位置)和后台服务,用于检查本地化和计算信息并显示在小部件上。
在 Android 9 之前,我使用 AlarmManager 和后台服务每隔几分钟检查一次用户本地化并在小部件上打印信息。 在 Android 9 中存在服务限制,我不能重复服务不少于 15 分钟。 15 分钟太多了,一些用户在上班或回家路上可以有 5 分钟。
我尝试了 JobService、JobIntentService、AlarmManager,但没有人工作不到 15 分钟。只有前台服务在工作,但我无法使用它,因为用户没有运行活动,一切都在后台使用小部件工作。
有没有人知道可以在不到 15 分钟的时间内在后台重复运行服务。或者也许有任何其他想法如何满足我的要求? 我需要每隔几分钟(1-5 分钟)检查一次用户本地化和计数,然后将数据发送到小部件视图。
【问题讨论】:
-
尝试只运行一项带有计时器的服务,每五分钟重复一次
-
Only Foreground Service is working but I cannot use it because user are not running activity, all is working in background using widget.你确定吗?您不必使用Activity来启动前台服务。如果它不起作用,你能用代码更新你的问题吗? -
嗨@Sagar,据我所知,要运行前台服务,需要打开活动或关闭前台服务。我对其进行了测试,前台服务在活动打开时启动,并且可以正常工作,但是当我关闭活动时,前台服务并不是每隔几分钟就运行一次。
-
@MikeB 前台服务不需要打开活动。它可以比活动生命周期更长。
-
@Sagar 当应用程序从最近的应用程序中删除时,即使我们使用 START_STICKY,前台服务也会从后台删除。你有什么想法可以防止这种情况发生吗?
标签: android localization widget android-9.0-pie