短版:Android重新启动手机(字面意思是重启)以摆脱前台服务吗?如果是这样,在什么情况下?
长版:我写了一个GPS服务,将自己注册为前台服务(在这种情况下,这是一个好主意 - 当我运行它时,它是我手机上最重要的一件事;))。在测试时,这项服务是大资源消费者 - 它每秒获取GPS数据并写入SD卡上的SQLite DB文件。稍后我将使用内部存储器并使轮询时间更长,但我现在需要测试数据。
该服务按预期工作。我创建了一个开始的活动&停止它,结果看起来很好。但是当我保持运行时,手机会在一段时间后(半小时左右)重新启动。由于我在正常使用中从未注意到这一点,因此我将此归因于我的服务。但是,我不知道造成这种情况的原因 - 我应该为CPU请求唤醒锁吗? (如果这是问题,不会手机只关机?)我的内存耗尽了吗?我用的电池太多了吗? (它是半满的)是否有一个日志,我可以检查手机重启的原因?
环境:Xperia X10,Android 2.3.3。
答案 0 :(得分:3)
正如其他人所说,Android不会重启手机以摆脱前台服务。我遇到的最常见的原因是:
Watchdog
因为死锁而导致主线程被杀死,导致Zygote
重启,这几乎就像从用户视图重启一样。没有细节或日志,只有猜测。然而,看起来您的Service
消耗了大量资源,可能会导致Watchdog
SystemServer
线程被调用,从而导致重新启动。
答案 1 :(得分:2)
AFAIK,没有。这对用户来说过于苛刻。没有什么关于前台服务以某种方式阻止操作系统像其他任何一样终止其进程。
我的猜测是你正在绊倒你的设备的一些固件错误。
答案 2 :(得分:0)
取自Android文档:
前台服务是一种服务,被认为是用户积极意识到的东西,因此在内存不足时不会被系统杀死的候选者