Android定期背景服务

时间:2015-08-28 06:06:15

标签: android android-intent android-activity android-intentservice

我怀疑如果我使用警报管理器启动定期服务并从活动的onCreate方法启动服务。如果一次又一次地启动该活动,如何防止服务多次触发。

2 个答案:

答案 0 :(得分:0)

假设您正在根据Android Service documentation创建普通IntentService(而不是Service),当应用调用startService时,服务将被实例化并启动(如果需要,为其创建一个流程)。

此外,如果它正在运行,那么它仍然在运行。

所以,简单来说,

  

"生命周期"服务独立于生命周期   已启动此服务的活动。无论如何都是如此   天气都在相同的过程或不同的过程中运行

即使你的Activity可能多次被创建,如果你之前创建的Service仍在运行,那么已经存在的服务对象将被重用。

但是,如果来自startService()的{​​{1}}的{​​{1}}来电,则每次onCreate()都会调用此Activity

因此,您需要确保拥有适当的代码/逻辑来处理onStartCommand()的多次调用

答案 1 :(得分:0)

据我了解,您必须在onCreate / onStart和onStop或onResume和onPaused上执行某些操作。通过做一些我的意思,在onCreate创建你需要的东西,报警管理器等然后在onStart你可以启动服务,在onStop你停止服务或unBind从它,如果你想要一个前台服务。或者在onResume或onStop上。 看看这里:
https://github.com/toaderandrei/live_tracking/blob/master/app/src/main/java/com/ant/track/activities/ServiceConnectActivity.java
这是一款基于Google的MyTracks应用程序的跟踪应用程序。