Android开发:服务被杀



我有一个正在运行的服务。但是,当任务管理器杀死启动服务的Activity时,服务就会被杀死。

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

Android中没有"taskmanager",至少没有这个名称。

如果你运行的是Android 2.1或更旧版本,自称"任务管理器"或"任务杀手"的第三方应用程序可以终止你的整个过程,除此之外,这将取消你的服务。

如果你运行的是安卓2.2或更新版本,而"任务管理员"的角色有所减少,操作系统中的"设置"应用程序允许用户强制停止任何应用程序或个人服务。

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

因此,精明的开发人员设计他们的应用程序以避免长时间运行的服务。例如,如果您每15分钟检查一次互联网内容(例如,新电子邮件(,而不是让服务一直运行,请使用AlarmManager每15分钟启动一次服务,并在互联网检查完成后让该服务自行停止。这给了你同样的功能,但你大部分时间都不在内存中。

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

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

更新

根据您的评论,我看到您正在使用"已启动"服务。在这种情况下,我建议您在单独的类中实现服务,而不是作为Activity类中的内部类。这可能是导致您出现问题的原因。

最新更新