Android开发:服务被杀死

时间:2011-07-03 10:18:29

标签: android service android-activity

我有一个正在运行的服务。但是当taskmanager杀死启动服务的Activivty时,服务就会被杀死。

当taskmanager杀死活动而不是服务时,为什么我的服务会被杀死?

2 个答案:

答案 0 :(得分:1)

Android中没有“taskmanager”,至少是那个名字。

如果您运行的是Android 2.1或更早版本,那么自称为“任务管理员”或“任务杀手”的第三方应用程序可以终止您的整个过程,此外还可以终止您的服务。

如果您运行的是Android 2.2或更高版本,而“任务管理器”的角色略有减少,则操作系统中的“设置”应用程序允许用户强制停止任何应用程序或单个服务。

IOW,你所看到的是完全正常的,你需要考虑的事情。用户不喜欢长时间运行的服务,除非他们从那些服务中感知到价值。因此,例如,杀死正在播放音乐的服务的用户很快就学会不再这样做。但是,如果用户不知道您的服务添加了什么价值,并且您的服务运行了很多,那么期望用户关闭它。

因此,精明的开发人员构建他们的应用程序以避免长时间运行的服务。例如,如果您每15分钟检查一次Internet(例如,新电子邮件),而不是一直运行服务,请使用AlarmManager每15分钟启动一次服务,然后使用互联网检查完成后,服务将自行停止。这为您提供了相同的功能,但大部分时间都会保持内存不足。

答案 1 :(得分:0)

补充CommonsWare:如果您的服务存在的唯一原因是它与活动绑定,当该活动被杀死时,服务不再存在,因此可能会被杀死。

(我在这里思考绑定服务!http://developer.android.com/guide/topics/fundamentals/services.html

<强>更新

根据您的评论,我发现您使用的是“已启动”服务。在这种情况下,我建议您在单独的类中实现服务,而不是作为Activity类中的内部类。这可能是造成问题的原因。