android - Android Things,如何捕获进程终止
问题描述
由于 Android Things 一次只运行一个应用程序,我不确定在终止/后台/恢复进程时规则与普通 Android 操作系统有何不同。
我的 Android Things 用例并非微不足道。我正在使用 PWM 通道控制执行器。问题是,如果我设置了“移动命令”,然后出现致命异常或其他此类中断,我的应用程序崩溃但执行器臂继续移动(因为 PWM 屏蔽保持其功率和值)!由于这些手臂正在控制一艘移动的船,这是非常危险的。
有没有办法以某种方式拦截进程的终止,以便我可以输入我的 PWM“归零”命令?还是有什么办法可以在我的主应用程序死机后立即启动其他一些执行此操作的进程?
解决方案
由于 Android Things 一次只运行一个应用程序,我不确定在终止/后台/恢复进程时规则与普通 Android 操作系统有何不同。
这并不完全正确。Android Things 围绕多个前台和后台应用程序具有与 Android 移动设备相同的语义。但是,由于没有默认的应用程序启动器,因此您必须定义一个应用程序来捕获默认HOME
意图并成为前台应用程序。从此应用程序中,您可以自由地在后台启动其他您认为合适的应用程序。
有没有办法以某种方式拦截进程的终止,以便我可以输入我的 PWM“归零”命令?还是有什么办法可以在我的主应用程序死机后立即启动其他一些执行此操作的进程?
如果该应用程序崩溃, Android 会HOME
自动重新启动该活动(除非您在其上启动了其他活动,除非您有 UI,否则不一定建议这样做)。您可以使用它来将您的硬件初始化为默认状态。
另一种选择是让您的电机驱动器逻辑在后台应用程序的绑定服务中运行。这将允许主应用程序作为主管运行(当绑定服务终止时它会收到通知)并重置 PWM(或重新启动服务,这会正确初始化 PWM)。
推荐阅读
- python - 如何加入位于另一个数据框的 2 列之间的 Pyspark 数据框?
- java - 无法使用 -ds.xml 配置从 jboss as 6 迁移到 jboss eap 7.1
- google-apps-script - 错误消息“您必须配置 G Suite Marketplace SDK 才能发布插件。” 正确配置 SDK 时
- swift - 工作副本目前不在 Xcode 11.3 的分支上
- java - 使用 HttpsServer 创建 TLS/SSL 服务器
- java - 从 Java 中的 ANSI 转义码获取响应
- python - Pandas 累计和重置基于最后一个检查点的百分比
- javascript - 如何确定是什么触发了计算出的 observable 发生变化?淘汰赛JS
- excel - Excel 数据透视表中的默认选择是什么
- math - 算术交换有哪些不同版本,它们为什么起作用?