如果android重新启动服务再次调用onCreate?

时间:2012-05-20 04:45:02

标签: android android-service

根据我的小知识,我明白Android操作系统可以在极端内存条件下终止我的服务。

我创建了一个返回START_STICKY的服务。该服务旨在在后台运行。

如果Android即将杀死我的服务,它会调用onDestroy吗?

当它重新启动时,它会调用onCreate吗?

2 个答案:

答案 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

编辑:快速回答。这两个问题都是的