我怀疑如果我使用警报管理器启动定期服务并从活动的onCreate方法启动服务。如果一次又一次地启动该活动,如何防止服务多次触发。
答案 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应用程序的跟踪应用程序。