Я делаю удар по большой программе с фоновой службой и реализую (довольно плохо продуманную) процедуру обработки сообщений с использованием базовых объектов Handler. Приложение имеет главное меню с кнопками, которые запускают 6 различных действий.
Проблема в следующем: если я запускаю рабочий поток, который запускает запрос к базе данных и извлекает некоторые данные, и я закрываю действие, которое запустило вышеупомянутый рабочий поток, обработчик в действии все еще пытается запустить и показать диалоговое окно, даже хотя действие, которое его создало, теперь завершено (или не в фокусе). Как я могу узнать, находится ли текущее действие в фокусе, прежде чем вносить какие-либо изменения (UI)?
В итоге я решил проблему, просто поместив вызов showDialog() в оператор try, но мне нужно более сложное решение, так как это кажется неправильным способом делать что-то.