繁体   English   中英

每 15 分钟发出一次 HTTP 请求的后台服务

[英]Background Service that makes an HTTP Request every 15 Mins

我正在尝试实现一个后台服务,从某个活动开始时开始,一整天每 15 分钟向 API 发出一次 HTTP 请求。 我需要每 15 分钟启动一次服务,即使我的应用程序没有运行,或者我正处于该应用程序的另一个活动中。 我搜索了一个如何进行的示例,并查看了一些 Stackoverflow 问题和答案,例如: 每 5 分钟后启动 Android 服务 链接到此页面: http : //code4reference.com/2012/07/tutorial-on-android-alarmmanager/

从讨论中我知道我需要使用警报管理器,但是所有实现都没有在它们具有广播接收器的同一活动中完成此操作。 我想要在同一个活动中实现的原因是因为请求的结果是我想要在 UI 上显示的结果。

有没有办法在这种情况下实现警报管理器

然而,所有的实现都没有在他们有广播接收器的同一个活动中完成

那是因为这是您唯一可行的选择,即使在 Android 6.0+ 上也无法正常工作。 在这种情况下使用AlarmManager的秘诀是让它启动一个WakefulBroadcastReceiver ,它反过来将与IntentService一起工作来完成工作并在工作完成时离开。

在 Android 6.0+ 上,由于“打盹模式”,如果设备未充电且未移动,您的AlarmManager事件不会每 15 分钟触发一次。 此外,由于 Android 6.0+ 上的“应用待机”功能,如果用户有一段时间没有进入您的应用程序的 UI 并且设备没有充电,您的AlarmManager事件不会每 15 分钟触发一次。

我想要在同一个活动中实现的原因是因为请求的结果是我想要在 UI 上显示的结果。

这与您之前发表的声明背道而驰:

即使我的应用程序没有运行,我也需要每 15 分钟启动一次服务

如果您的应用程序未运行,则您没有活动。

欢迎您让您的IntentService在事件总线上发布消息,例如greenrobot 的 EventBus ,让您的活动知道工作的结果......如果活动恰好在附近(否则,该消息将被忽略) .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM