2011-07-03 120 views
1

我有一个正在运行的服务。但是,当taskmanager杀死启动服务的Activivty时,该服务会被杀死。Android开发:服务死亡

为什么当任务管理器杀活动不是服务我的服务被杀?

回答

0

补充CommonsWare:如果您的服务存在的唯一理由是,它绑定到活动,当活动被杀害,不再有对存在的服务的一个原因,因此它可以被杀死。

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

更新

基于您的评论,我看你使用的是“开始”的服务。在这种情况下,我建议你在一个单独的类中实现服务,而不是Activity类中的内部类。这可能是导致你的问题。

+0

的应用程序,我在扩展活动类中添加了很多细节:startService(this.myService) – carefacerz

+0

不,我有2个类,我扩展了活动并扩展了一个服务。 – carefacerz

+0

我认为他的意思是说,我遇到过类似的情况:他有一个Activity,并使用startService()来启动他的服务。在某些时候,活动会被杀死(强制停止包com.mypackage)。下一个logcat消息告诉我,我的服务已经崩溃,并且ActivityManager正在计划它的重新启动,这可能发生也可能不会发生。对此有何看法? – nhaarman

1

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

如果您运行的是Android 2.1或以上,描述自己为“任务管理器”或“任务杀手”,第三方应用程序可以终止你的整个过程中,多之外,这将摆脱你的服务。

如果您运行的是Android 2.2或更高版本,而“任务管理器”有一个稍微降低的作用,在操作系统中设置应用程序允许用户强制停止任何应用程序或个人服务。

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

结果,精明的开发商设计他们的应用程序,以避免长时间运行的服务。例如,如果您每15分钟检查一次Internet(例如,新电子邮件),而不是让所有时间都运行服务,请使用AlarmManager每15分钟启动一次服务,并让该服务自行停止一次互联网检查已完成。这给你提供了相同的功能,但是大部分时间你都会记忆犹新。

+1

对不起,我的意思是任务杀手。因为内置的HTC Sense 2.3.3有一个名为taskmanager – carefacerz