取消绑定后服务会被破坏

时间:2014-01-14 22:33:38

标签: android service

我有一个返回START_STICKY onStartCommand的服务,并且由应用程序的onCreate上的startService启动,在我的活动中,我可以互换地绑定到这个服务,但由于某种原因,每次我的所有活动解除绑定时服务都会被销毁,但是我可以gaurantee stopSelf \ stopService从未被调用过。可能是什么原因?

2 个答案:

答案 0 :(得分:3)

好的,找到了答案 - 在应用程序的onCreate上调用startService时发送了DONT,因为在我的情况下,只有当我的主要活动被用户退出时才调用stopService,但即使没有活动也没有运行服务我的应用程序android没有杀死进程并且没有释放Application对象进行垃圾收集,这导致下次用户启动我的应用程序时,应用程序的onCreate没有被调用,因为它已经存在,因此服务的生命周期仅由活动结合在一起,这就是为什么它在所有活动无限制时被摧毁的原因。

ehhhh Android和他们奇怪的设计......

答案 1 :(得分:3)

如果应用程序从未运行或已被销毁以释放内存,则仅调用Application.onCreate()。如果你需要一个持久的服务,在你的Activity结束后继续在后台运行,那么你可以考虑将它作为foreground service来运行,这将使得Dalvik尽量不要杀死它,除非它绝对必须。