2015-09-08 88 views
-1

我试图实现一个后台服务,该服务每隔15分钟向一个API发出一个HTTP请求,从某个活动开始时开始。即使我的应用程序没有运行,或者我正在处理该应用程序的其他活动,我也需要每15分钟启动一次服务。我已经搜索了一个例子,看看如何进行一些Stackoverflow的问题和答案,例如:Start Android Service after every 5 minutes。它链接到这个页面:http://code4reference.com/2012/07/tutorial-on-android-alarmmanager/每15分钟发出一个HTTP请求的后台服务

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

是否有这种情况

回答

1

但是所有的实现没有这个正在他们广播接收机

相同的活动,是完成实施警报管理器的方式因为这是你唯一可行的选择,甚至在Android 6.0+上也不行。在这种情况下使用AlarmManager的配方是让它启动一个WakefulBroadcastReceiver,然后它将与IntentService一起工作来完成工作,并在工作完成时离开。

在Android 6.0+上,如果设备没有充电并且没有移动,您的AlarmManager事件将不会每15分钟触发一次,在“打盹模式”下提供。此外,如果用户在您的应用程序的用户界面中未使用一段时间且设备未在充电,则Android 6.0+上的“应用程序待机”礼貌,您的AlarmManager事件不会每15分钟触发一次。

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

这违背了,你做了早些时候的发言:

我需要的服务,每15分钟就开始即使我的应用程序没有运行

如果您的应用没有运行,那么你没有一个活动。

欢迎您让IntentService在活动巴士上发布信息,例如greenrobot's EventBus,让您的活动知道工作结果......如果活动恰好在周围(否则,信息会被忽略)。

相关问题