【问题标题】:Android Periodic Background ServicesAndroid 定期后台服务
【发布时间】:2015-08-28 06:06:14
【问题描述】:

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

【问题讨论】:

  • 你能显示代码吗?

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


【解决方案1】:

假设您正在创建一个普通的Service(而不是IntentService),按照Android Service documentation,当应用调用startService 调用时,服务将被实例化并启动(创建一个如果需要,请处理它)。

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

所以,简单来说,

“Started”服务的生命周期独立于服务的生命周期 已启动此服务的活动。这是真的,不管 天气都在同一进程或不同进程中运行

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

但是,如果从ActivityonCreate() 调用startService(),这将在每次onStartCommand() 时调用。

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

【讨论】:

    【解决方案2】:

    据我了解,您必须在 onCreate/onStart 和 onStop 或 onResume 和 onPaused 中执行某些操作。我的意思是,在 onCreate 中创建您需要的内容、警报管理器等,然后在 onStart 中启动服务,在 onStop 中停止服务或取消绑定,以防您需要前台服务。或在 onResume 或 onStop 中。 看看这里:
    https://github.com/toaderandrei/live_tracking/blob/master/app/src/main/java/com/ant/track/activities/ServiceConnectActivity.java.
    这是一个基于谷歌 MyTracks 应用的跟踪应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多