我正在开发一些Android设备,它们经常执行相当密集的任务。
我注意到了一个奇怪的问题(通常在连续运行2-3周后),设备停止工作,所有与它的通信都会中断。由于我没有任何访问这些设备的权限,我只能假设OS已经杀死了所有正在运行的进程(上面有几个进程可以与几个不同的后端服务器通信,并且它们都会同时断开连接)。
我目前正在通过实现固件监视(通过从来源编译它)来解决这个问题,但我正在试图找出是什么导致设备死亡。
是否有一些android功能可以杀死所有进程并需要重新启动才能修复?我能做些什么来避免这种情况的发生?在发生这种情况时,是否有我可以查看的日志?
发布于 2018-04-09 07:10:47
不知道对AOSP做了什么,但是确实有一些机制可以使系统重新启动。
在init.rc中,如果一个服务被记为“关键”,那么如果服务崩溃超过4次,系统将重新启动到恢复模式。
在框架内,如果一个服务属于核心服务并崩溃,系统将重新启动整个android,而不是内核。
温度,有两种类型的温度重新启动计划。一个是CPU热,但这与android无关,它是一个CPU功能。另一种是电池温度,如果电池的心脏高于预期,健康(监视电池状态的android恶魔)将注意到框架,框架将重新启动。
如果通信逻辑是在Android中编写的,我建议您将此应用程序作为持久化程序。这将确保应用程序将永远留在内存中,如果应用程序崩溃,系统将重新启动该应用程序。这可能不会解决你的问题,但可以恢复沟通工作。
我认为不难搞清楚到底是怎么回事,通常逻辑猫包含了细节。
发布于 2018-04-07 05:56:28
对您的场景的解释之一是CPU过热。在这种情况下,不仅设备会自动关闭,它也不能立即重新启动。
您可能会在系统日志中发现温度警告,但您可以在软件中监视这一点,并控制CPU密集型任务以防止过热。
https://stackoverflow.com/questions/49619579
复制相似问题