Android设备偶尔会重启

时间:2012-06-29 20:52:15

标签: android debugging

我们正在真实设备上测试我们的Android应用程序,并注意其中一些应用程序运行2-3小时后偶尔会重新启动。该应用程序包含一个具有3个线程(具有GPS和网络)的服务和两个活动,其中一个是耗费资源的(显示地图)

Logcat没有帮助,因为我们在设备重启之前没有看到任何重要消息。有时设备甚至无法启动,只有电池拆卸才有助于重新启动它。

这些设备基于不同的硬件,在不同国家(主要是PRC,hehe)生产,并使用不同的Android版本。

可能导致设备重启的最常见问题是什么?如何调试它?

4 个答案:

答案 0 :(得分:4)

Android中有两种重启:

  1. 系统服务器故障。在这种情况下,不会重新启动,但Zygote会重新启动。常见原因:

    • Watchdog杀死了一个system_server进程,因为它正在运行的服务出现僵局。
    • 其中一个系统服务发生致命异常。但是,实际原因有时可能是硬件问题。例如,在某些情况下,出厂重置后ext2分区的格式不符合以下条件。它导致错误并且/data/分区以只读方式挂载,这会产生一堆错误。
    • 在极少数情况下,由于内存和CPU使用率过高,看门狗可能会超时。

    两者都非常罕见,并且可以主要在猴子测试中复制,而不是真实情况。您可以通过使用service_manager终止adb shell进程来查看logcat输出示例。

  2. 内核恐慌。在那种情况下,设备实际上重新启动。由于内核恐慌发生在Android的图层上,它不会产生任何logcat输出。相反,它会将堆栈跟踪写入控制台。您可以从/dev/kmsg或从ADB shell中读取它:adb shell dmesg

    不幸的是,很难读取这些内容,因为在大多数设备上,控制台输出被禁用,每次重启时都会删除kmsg缓冲区。

  3. P.S。也可能由硬件问题引起重启。在这种情况下,它不太可能找到任何痕迹,但希望这只能在特定设备上再现。

答案 1 :(得分:1)

我有一个类似的问题(也是gps和网络)我忘了将网络更新计时器设置为生产(15分钟),因此设备每15秒更新一次设备过热的声音或更晚(htc欲望)
尽量减少cpu使用(分析)或确保适当的冷却机制

答案 2 :(得分:0)

根据您提供的信息,听起来您最有可能泄漏Thread。您可以使用DDMS分析thread usage应用程序的执行过程。另一种可能性是你只是内存不足......你也可以使用DDMS来帮助你解决这个问题。

答案 3 :(得分:0)

当GPS接收器打开时,这很可能是一个过热问题。关闭GPS并从手机网络获取位置,该应用程序可以保持数小时的平稳运行。

感谢大家的回应和想法!