我对服务生命周期感到困惑 我有很多问题:
如果我的应用多次向服务调用startService()
,是否会同时运行多个服务?或者只有一个?
首先,如果我在我的应用中多次致电bindService()
,我的应用会怎样?
假设我有一个通过startService()
启动的服务,然后我绑定它以指示它做某事。在这种情况下,如果我指示(通过此Binder接口)服务执行其stopSelf()
方法,正在运行的服务是否立即停止?
再次假设我有一个只能由bindService()
启动的服务,而onUnbind
会被覆盖以返回true,在这种情况下,我应该调用stopSelf
显式关闭服务的方法?
答案 0 :(得分:4)
Android设备上只存在一个服务实例。启动服务只启动一次,其他启动调用将导致重复调用onStartCommand,但不会启动同一服务的新实例。
如果通过绑定绑定服务来启动绑定服务,并且这是第一次使用该服务,则将创建一个新实例并调用onBind方法。
是。但是,服务启动的线程和服务注册的侦听器将被泄露。您应该在onDestroy方法上处理这些资源。
无需致电停止自我。当最后一个用户从服务中解除绑定时,该服务将自动销毁。
答案 1 :(得分:-1)
是的,您可以同时运行多个服务。但是,如果您使用的是服务,则必须小心谨慎。如果您要启动服务,则必须使用onDestroy()
或自定义方法等任何方法停止该服务,因为无论何时完成活动,该服务仍在后台运行。
还有一件事:仅在需要媒体播放器等后台处理时才使用服务;否则,你可以通过活动实现所有这些。
有关详细信息,请阅读Android developer service document.