2014-01-14 38 views
1

我有一个服务返回START_STICKY onStartCommand,并且由应用程序的onCreate上的startService启动,在我的活动中,我可以交互地绑定到该服务,但由于某种原因,每次我的所有活动都取消绑定它,但我可以保证stopSelf \ stopService永远不会被调用。可能是什么原因?解除绑定后服务被破坏

+0

你可以发布代码? – Android

回答

3

好的,找到了答案 - DONT在onCreate上对startService的调用进行中继,因为在我的情况下,只有当我的主要活动由用户后退出时才调用stopService,但即使没有活动或服务正在运行对于我的应用程序,android并没有终止进程,也没有释放用于垃圾收集的Application对象,这导致下次用户启动我的应用程序时,Application的onCreate没有被调用,因为它已经存在,因此服务的生命周期仅由这些活动被绑定到它上面,这就是为什么当所有活动都是无限的时候它被破坏了。

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

3

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