2012-07-11 69 views
2

我得到了一个奇怪的问题与服务。它在ICS仿真器上正确无误地工作。但是当我使用ICS 4.0.4在Galaxy Nexus上启动它时,我观察到服务在没有任何堆栈跟踪的情况下发生奇怪的崩溃。以下是我所得到的全部内容:服务崩溃的银河联系,但不是模拟器

07-11 16:26:37.758: INFO/ActivityManager(136): Process com.test.service (pid 3899) has died. 
07-11 16:26:37.758: WARN/ActivityManager(136): Scheduling restart of crashed service com.test.service/.MyService in 20000ms 

我已经使用了Google,但没有发现任何想法。可能它与内存压力有某种联系?我期望做什么?

UPD

附:如果它有任何意义,我从onStartCommand()启动后台线程,并且此线程无限工作。

P.P.S.我尝试在单独的过程中启动服务,但没有运气。

回答

1

我的理解是,系统偶尔会删除/杀死当时不需要的进程。但是,如果onStartCommand返回START_STICKY,它会在它被杀死后立即重新启动......我没有看到杀死这些进程的点,尽管我猜它可以在极端情况下提供帮助。模拟器行为可能会有所不同。

假设你的服务不真正崩溃(应该在logcat的某种堆栈跟踪),以防止系统这样轻易地查杀服务,它必须开始作为一个foreground服务。

+0

startForeground看起来很有帮助。我会试一试,谢谢。 – 2012-07-12 06:36:12