启动和绑定的服务的生命周期?

时间:2011-03-09 09:17:26

标签: android service

我对服务生命周期感到困惑 我有很多问题:

  1. 如果我的应用多次向服务调用startService(),是否会同时运行多个服务?或者只有一个?

  2. 首先,如果我在我的应用中多次致电bindService(),我的应用会怎样?

  3. 假设我有一个通过startService()启动的服务,然后我绑定它以指示它做某事。在这种情况下,如果我指示(通过此Binder接口)服务执行其stopSelf()方法,正在运行的服务是否立即停止?

  4. 再次假设我有一个只能由bindService()启动的服务,而onUnbind会被覆盖以返回true,在这种情况下,我应该调用stopSelf显式关闭服务的方法?

2 个答案:

答案 0 :(得分:4)

  1. Android设备上只存在一个服务实例。启动服务只启动一次,其他启动调用将导致重复调用onStartCommand,但不会启动同一服务的新实例。

  2. 如果通过绑定绑定服务来启动绑定服务,并且这是第一次使用该服务,则将创建一个新实例并调用onBind方法。

  3. 是。但是,服务启动的线程和服务注册的侦听器将被泄露。您应该在onDestroy方法上处理这些资源。

  4. 无需致电停止自我。当最后一个用户从服务中解除绑定时,该服务将自动销毁。

答案 1 :(得分:-1)

是的,您可以同时运行多个服务。但是,如果您使用的是服务,则必须小心谨慎。如果您要启动服务,则必须使用onDestroy()或自定义方法等任何方法停止该服务,因为无论何时完成活动,该服务仍在后台运行。

还有一件事:仅在需要媒体播放器等后台处理时才使用服务;否则,你可以通过活动实现所有这些。

有关详细信息,请阅读Android developer service document.