我正在尝试实现一个后台服务,该服务每隔15分钟向API发出一次HTTP请求,从某个活动开始时开始。我需要每15分钟启动一次服务,即使我的应用程序没有运行或我在该应用程序的另一个活动中。我已经搜索了一个示例,了解如何继续查看一些Stackoverflow问题和答案,例如:Start Android Service after every 5 minutes。链接到此页面:http://code4reference.com/2012/07/tutorial-on-android-alarmmanager/
从讨论中我知道我需要使用一个报警管理器,但是所有的实现并没有在他们拥有广播接收器的同一活动中完成。我希望在同一个活动中实现该实现的原因是因为请求的结果是我想要在UI上显示的结果。
有没有办法在这种情况下实施警报管理器
答案 0 :(得分:1)
然而,所有实现都没有在他们拥有广播接收器的同一活动中完成这项工作
这是因为这是您唯一可行的选择,即使在Android 6.0+上也无法正常运行。在这种情况下使用AlarmManager
的方法是让它开始WakefulBroadcastReceiver
,然后IntentService
将与AlarmManager
一起完成工作,并在工作完成后离开
在Android 6.0+上,由于“打盹模式”,如果设备未充电且未移动,则您的AlarmManager
事件不会每15分钟触发一次。此外,由于Android 6.0+上的“app standby”礼貌,如果用户未在应用程序的UI中停留一段时间且设备未收费,则您的IntentService
事件不会每15分钟触发一次。
我希望在同一活动中实现该实现的原因是因为请求的结果是我想要在UI上显示的内容。
这与之前的声明背道而驰:
即使我的应用程序没有运行,我也需要每15分钟启动一次服务
如果您的应用程序未运行,则表示您没有活动。
欢迎您struct numberedString{
string s;
int n;
}
在活动总线上发布消息,例如greenrobot's EventBus,让您的活动了解工作结果......如果活动恰好是周围(否则,将忽略该消息)。