首页 > 解决方案 > Android Things,如何捕获进程终止

问题描述

由于 Android Things 一次只运行一个应用程序,我不确定在终止/后台/恢复进程时规则与普通 Android 操作系统有何不同。

我的 Android Things 用例并非微不足道。我正在使用 PWM 通道控制执行器。问题是,如果我设置了“移动命令”,然后出现致命异常或其他此类中断,我的应用程序崩溃但执行器臂继续移动(因为 PWM 屏蔽保持其功率和值)!由于这些手臂正在控制一艘移动的船,这是非常危险的。

有没有办法以某种方式拦截进程的终止,以便我可以输入我的 PWM“归零”命令?还是有什么办法可以在我的主应用程序死机后立即启动其他一些执行此操作的进程?

标签: androidhardwareandroid-thingspwmandroid-hardware

解决方案


由于 Android Things 一次只运行一个应用程序,我不确定在终止/后台/恢复进程时规则与普通 Android 操作系统有何不同。

这并不完全正确。Android Things 围绕多个前台和后台应用程序具有与 Android 移动设备相同的语义。但是,由于没有默认的应用程序启动器,因此您必须定义一个应用程序来捕获默认HOME意图并成为前台应用程序。从此应用程序中,您可以自由地在后台启动其他您认为合适的应用程序。

有没有办法以某种方式拦截进程的终止,以便我可以输入我的 PWM“归零”命令?还是有什么办法可以在我的主应用程序死机后立即启动其他一些执行此操作的进程?

如果该应用程序崩溃, Android 会HOME自动重新启动该活动(除非您在其上启动了其他活动,除非您有 UI,否则不一定建议这样做)。您可以使用它来将您的硬件初始化为默认状态。

另一种选择是让您的电机驱动器逻辑在后台应用程序的绑定服务中运行。这将允许主应用程序作为主管运行(当绑定服务终止时它会收到通知)并重置 PWM(或重新启动服务,这会正确初始化 PWM)。


推荐阅读