根据我的小知识,我明白Android操作系统可以在极端内存条件下终止我的服务。
我创建了一个返回START_STICKY
的服务。该服务旨在在后台运行。
如果Android即将杀死我的服务,它会调用onDestroy
吗?
当它重新启动时,它会调用onCreate
吗?
答案 0 :(得分:12)
请参阅此处的开发指南。 http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle
onCreate()
仅在进程启动时调用,可以是服务第一次运行,也可以在重新启动时被终止,实际上每次启动时都会调用它。
onStartCommand()
,就会调用 startService()
。
当服务被销毁/完全停止时,Android应该在该服务上调用onDestroy()
。我认为这可能不会发生(例如,进程不是通过Android系统杀死)。对于绑定服务,这是在没有更多活动客户端绑定器的情况下。
修改:onCreate()
服务启动; onStartCommand()
有人使用服务; onDestroy()
服务被终止/停止。
答案 1 :(得分:4)
如果有人调用Context.startService(),系统将检索 服务(创建它并在需要时调用其onCreate()方法) 然后用它调用它的onStartCommand(Intent,int,int)方法 客户提供的参数
...
服务既可以启动,也可以绑定连接。在 在这种情况下,系统只要保持服务运行 要么启动,要么有一个或多个连接 Context.BIND_AUTO_CREATE标志。曾经两种情况都没有 hold,调用服务的onDestroy()方法,服务就是 有效终止。所有清理(停止线程,取消注册 接收器)应该从onDestroy()返回时完成。
http://developer.android.com/reference/android/app/Service.html
编辑:快速回答。这两个问题都是的