У меня есть рабочий поток, управляемый моей активностью. При выходе из действия (например, onPause()) я отправляю сообщение в этот поток, и оно должно завершиться вскоре (миллисекунды), если что-то не пойдет не так. Обычно я бы использовал join() в onPause(), но в этом случае этот поток должен использовать поток пользовательского интерфейса, чтобы выполнить свою последовательность выключения (закрытие файлового дескриптора Accessory не работает из любого другого потока, кажется) . Таким образом, попытка заблокировать поток пользовательского интерфейса приведет к взаимоблокировке. Я ищу решение, которое каким-то образом отложит выход приложения до завершения потока. Возможно, если бы я мог просто прервать выход в таком случае, я мог бы позже вызвать finish() вручную, но я не уверен, можно ли это (прерывание) сделать.
Просто предполагать, что поток в конце концов закончит свою очистку и выйти, кажется очень небезопасной практикой.