首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android设备偶尔会重启

Android设备偶尔会重启
EN

Stack Overflow用户
提问于 2012-06-30 04:52:15
回答 4查看 8.7K关注 0票数 6

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

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

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

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-07-02 12:52:15

当GPS接收器打开时,这很可能是过热问题。关闭GPS并从蜂窝网络获取位置后,该应用程序可以连续几个小时平稳运行。

感谢大家的回复和想法!

票数 0
EN

Stack Overflow用户

发布于 2012-06-30 05:57:52

Android中有两种类型的重启:

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

代码语言:javascript
复制
- Watchdog killed a system\_server process because of deadlock in of services it's running.
- Fatal exception occured in one of system services. However, the actual reason sometimes may be a hardware issue. For example, in some cases after factory reset `ext2` partitions aren't formatted as follows. It leads to errors and `/data/` partition is mounted as read-only, which produces a bunch of errors.
- In rare cases watchdog can be timed out because of high memory and CPU usage.

这两种情况都很少见,大多数情况下都可以在猴子测试中重现,而不是在真实情况下。您可能会看到一个使用adb shell终止service_manager进程的logcat输出示例。

  1. 内核死机。在这种情况下,设备实际上会重新启动。当Android之外的层发生内核恐慌时,它不会产生任何logcat输出。相反,它会将堆栈跟踪写入控制台。您可以从/dev/kmsg或从ADB shell:adb shell dmesg阅读它。

不幸的是,很难读取它们,因为在大多数设备上,控制台输出都是禁用的,每次重新启动时,kmsg缓冲区都会被擦除。

备注:重新启动可能是由硬件问题引起的。在这种情况下,它不太可能找到任何痕迹,但希望这应该只在特定的设备上重现。

票数 3
EN

Stack Overflow用户

发布于 2012-06-30 05:27:35

我有一个类似的问题(还有gps和网络),我忘了将网络更新计时器设置为生产(15分钟),所以设备每15秒更新一次,不管怎么说,设备过热,索纳或更晚(htc希望)

尽量减少cpu使用率(性能分析)或确保正确的冷却机制

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11268784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档