Android Things, как перехватить завершение процесса

#android #hardware #android-things #pwm #android-hardware

#Android #аппаратное обеспечение #android-вещи #pwm #android-аппаратное обеспечение

Вопрос:

Поскольку Android Things одновременно запускает только одно приложение, я не уверен, чем правила отличаются от обычной ОС Android, когда дело доходит до завершения / фонового / возобновления процесса.

Мой вариант использования Android Things не тривиален. Я управляю исполнительными механизмами с помощью каналов PWM. Проблема в том, что если я задаю «команду перемещения», а затем возникает фатальное исключение или другое подобное прерывание, мое приложение завершает работу, но рычаги привода продолжают двигаться (потому что экран PWM сохраняет свою мощность и значения)! Поскольку эти руки управляют движущейся лодкой, это довольно опасно.

Есть ли какой-нибудь способ, каким-то образом перехватить завершение процесса, чтобы я мог вводить свои команды PWM «обнулить»? Или есть какой-то способ в game Android Things немедленно загрузить какой-то другой процесс, который делает это после того, как мое основное приложение умрет?

Ответ №1:

Поскольку Android Things одновременно запускает только одно приложение, я не уверен, чем правила отличаются от обычной ОС Android, когда дело доходит до завершения / фонового / возобновления процесса.

Это не совсем так. Android Things имеет ту же семантику для нескольких приложений переднего плана и фоновых приложений, что и мобильное устройство Android. Однако, поскольку нет средства запуска приложений по умолчанию, вы должны определить приложение, чтобы зафиксировать HOME намерение по умолчанию и стать приложением переднего плана. Из этого приложения вы можете свободно запускать другие приложения в фоновом режиме по своему усмотрению.

Есть ли какой-нибудь способ, каким-то образом перехватить завершение процесса, чтобы я мог вводить свои команды PWM «обнулить»? Или есть какой-то способ в game Android Things немедленно загрузить какой-то другой процесс, который делает это после того, как мое основное приложение умрет?

Android автоматически перезапускает HOME действие, если это приложение завершается сбоем (если только вы не запустили другие действия поверх него, что необязательно рекомендуется, если у вас нет пользовательского интерфейса). Вы могли бы использовать это для инициализации вашего оборудования в состояние по умолчанию.

Другой вариант заключается в том, чтобы логика вашего драйвера двигателя запускалась в связанных службах в фоновом приложении. Это позволило бы основному приложению запускаться в качестве супервизора (оно получает уведомление, когда связанная служба умирает) и сбрасывать PWM (или перезапускать службу, которая правильно инициализирует PWM).

Комментарии:

1. Идея сервисов великолепна. Я попробую это и вернусь.

Ответ №2:

Я бы добавил к предыдущему ответу, что было бы неплохо сбросить состояние аппаратных компонентов внутри OnStart и добавить надлежащую обработку исключений (т. Е. На случай, если что-то случайно отключится)