我有一个返回START_STICKY onStartCommand的服务,并且由应用程序的onCreate上的startService启动,在我的活动中,我可以互换地绑定到这个服务,但由于某种原因,每次我的所有活动解除绑定时服务都会被销毁,但是我可以gaurantee stopSelf \ stopService从未被调用过。可能是什么原因?
答案 0 :(得分:3)
好的,找到了答案 - 在应用程序的onCreate上调用startService时发送了DONT,因为在我的情况下,只有当我的主要活动被用户退出时才调用stopService,但即使没有活动也没有运行服务我的应用程序android没有杀死进程并且没有释放Application对象进行垃圾收集,这导致下次用户启动我的应用程序时,应用程序的onCreate没有被调用,因为它已经存在,因此服务的生命周期仅由活动结合在一起,这就是为什么它在所有活动无限制时被摧毁的原因。
ehhhh Android和他们奇怪的设计......
答案 1 :(得分:3)
如果应用程序从未运行或已被销毁以释放内存,则仅调用Application.onCreate()
。如果你需要一个持久的服务,在你的Activity结束后继续在后台运行,那么你可以考虑将它作为foreground service来运行,这将使得Dalvik尽量不要杀死它,除非它绝对必须。