15

从我的一点 android 知识中,我了解到 android 操作系统可以在极端内存条件下杀死我的服务。

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

如果 android 即将终止我的服务,它会调用onDestroy吗?

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

4

2 回答 2

14

请参阅此处,开发指南。http://developer.android.com/reference/android/app/Service.html#ProcessLifecycle

onCreate()仅在进程启动时调用,这可能是服务第一次运行时,或者如果它在重新启动时被杀死,本质上是在它启动时调用。

onStartCommand()每当客户端调用startService().

当服务被销毁/完全停止时,Android 应该调用onDestroy()该服务。我认为这可能不会发生(例如,进程不是通过Android系统被杀死的)。在绑定服务的情况下,这是没有更多活动客户端绑定器的情况。

编辑:onCreate()服务开始;onStartCommand()有人使用服务;onDestroy()服务被杀死/停止。

于 2012-05-20T04:54:19.313 回答
4

如果有人调用 Context.startService() 则系统将检索服务(创建它并在需要时调用其 onCreate() 方法)然后使用客户端提供的参数调用其 onStartCommand(Intent, int, int) 方法

...

服务既可以启动,也可以绑定连接。在这种情况下,只要服务已启动或有一个或多个使用 Context.BIND_AUTO_CREATE 标志的连接,系统就会保持服务运行。一旦这两种情况都不成立,就会调用服务的 onDestroy() 方法并有效地终止服务。从 onDestroy() 返回时,所有清理(停止线程、注销接收器)都应该完成。

http://developer.android.com/reference/android/app/Service.html

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

于 2012-05-20T04:53:53.843 回答