Android Things, как поймать процесс убийства - PullRequest
1 голос
/ 18 марта 2019

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

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

Есть ли какой-нибудь способ как-то перехватить уничтожение процесса, чтобы я мог включить в свои команды ШИМ "обнуление"? Или в игре Android Things есть какой-то способ немедленно загрузить какой-то другой процесс, который делает это после того, как мое основное приложение умирает?

Ответы [ 2 ]

2 голосов
/ 18 марта 2019

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

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

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

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

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

0 голосов
/ 19 марта 2019

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

...