Android 是否有一些功能会杀死所有 运行 进程并需要重新启动才能修复?

Does Android have some functionality that kills all running processes and requires a reboot to fix?

我正在开发一些 Android 设备,这些设备不断地执行相当密集的任务。

我注意到发生了一个奇怪的问题(很少见,通常在 运行 持续 2-3 周后)设备停止运行,并且与它的所有通信都中断了。由于我无法访问这些设备,我只能假设 OS 已经杀死了所有 运行 进程(上面有几个进程与几个不同的后端服务器通信,它们都断开连接同时)

我目前正在通过实施固件看门狗(通过从 source 编译它)来解决这个问题,但我试图首先找出导致设备死机的原因。

是否有某些 android 功能会终止所有进程并需要重新启动才能修复?我该怎么做才能避免这种情况发生?当发生这种情况时,是否有任何我可以查看的日志?

对您的情况的一种解释是 CPU 过热。在这种情况下,设备不仅会自动关机,而且无法立即重启。

您可能会在系统日志中发现温度警告,但您可以在软件中对此进行监控,并降低 CPU-intensive 任务以防止其过热。

不知道对 AOSP 做了什么,但确实有一些机制可以使系统重新启动。

在init.rc中,如果服务被注释为"critical",那么如果服务崩溃超过4次,系统将重新启动到恢复模式。

在framework中,如果a服务属于核心服务,crash了,系统会重启整个android,但不会重启内核。

温度,有两种类型的温度重启计划。一个是CPU热度,但这跟android没有关系,是CPU的一个特点。另外,电池温度,如果电池的心脏高于预期,healthd(一个android监视电池状态的恶魔)会注意到框架,框架会重启。

如果通讯逻辑是写在AndroidApp中,建议你把这个app做成persist。这将确保该应用程序将永远保留在内存中,如果应用程序崩溃,系统将重新启动该应用程序。这可能无法解决您的问题,但可以恢复通信工作。

我认为不难弄清楚发生了什么,通常 logcat 包含详细信息。