1

简短版:Android 是否会重启手​​机(字面意思是重启)以摆脱前台服务?如果是,在什么情况下?

长版:我写了一个 GPS 服务,它把自己注册为前台服务(在这种情况下,这是一个好主意 - 当我运行它时,它是我手机上最重要的事情;))。在测试时,该服务消耗大量资源——它每秒获取 GPS 数据并写入 SD 卡上的 SQLite DB 文件。稍后我将使用内部存储器并延长轮询时间,但我现在需要测试数据。

该服务按预期工作。我创建了一个启动和停止它的活动,结果看起来很好。但是当我让它继续运行时,手机会在一段时间(半小时左右)后自行重启。由于我在正常使用中从未注意到这一点,因此我将其归因于我的服务。但是,我不知道是什么原因造成的——我应该为 CPU 请求唤醒锁吗?(如果这是问题所在,电话不会直接关机吗?)我是不是内存不足了?我用了太多电池吗?(它是半满的)是否有一个日志可以检查手机重启的原因?

环境:Xperia X10,Android 2.3.3。

4

3 回答 3

3

正如其他人所说,Android 不会重启手机以摆脱前台服务。我遇到的最常见的原因是:

  • 由于驱动程序错误或内存损坏等导致的内核恐慌。
  • Watchdog由于死锁而杀死主线程并导致Zygote重新启动,这几乎就像从用户的角度重新启动一样。

没有详细信息或日志,只有猜测。然而,看起来当您Service消耗了大量资源时,它可能会导致调用WatchdogonSystemServer线程并导致重新启动。

于 2012-05-29T11:57:25.433 回答
2

AFAIK,不。这对用户来说过于苛刻。前台服务不会以某种方式阻止操作系统像其他任何进程一样终止其进程。

我的猜测是您的设备遇到了一些固件错误。

于 2012-05-29T11:49:58.463 回答
0

取自 Android 文档:

前台服务是一种被认为是用户主动意识到的服务,因此不会在内存不足时被系统杀死

于 2012-09-28T13:13:05.540 回答