2014-10-01 31 views
1

我有2个关于服务的onDestroy()在Android的服务

1.Will一个服务的onDestroy()方法的onDestroy()方法的问题,如果该服务被由于缺乏系统杀死被称为的记忆。

2.如果服务被终止,将会调用服务的onDestroy()方法,因为启动该服务的应用程序已在重新发送的应用程序屏幕中被用户刷掉。

回答

2

第一个问题。

基于我以前的经验和Android开发文档。 onDestroy()即使服务被系统杀死,也会调用服务的方法.Google Android开发者文档在下面。

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

第二个问题。

如果您想在关闭应用程序时关闭服务,那么是的。 Aneroid服务在后台运行,通常在你摧毁你的应用程序时不会被杀死。

+0

我不希望我的服务被杀死(在任何情况下),直到我调用stopService()。在onStartCommand()中返回START_REDELIVER_INTENT是唯一的方法吗? – DrkStr 2014-10-01 08:25:59

+0

如果启动服务,则可以定义何时必须停止此服务。但是,如果设备通过内存管理停止服务,则可以调用onDestroy()方法的服务。 – 2014-10-01 08:42:18

+0

所以我只是在onDestroy()中调用startService(intent)? – DrkStr 2014-10-01 09:07:23

3
  1. 当系统终止服务时,系统会调用onDestroy,但是当您的应用程序进程终止时,onDestroy可能不会被调用。

  2. onDestroy()将被称为IF服务因此被终止。 (情况并非总是如此)请参阅此discussion了解更多信息。