У меня есть действие, которое я использовал в качестве пользовательского диалогового окна загрузки (диалоговое окно довольно сложное и имеет пользовательский интерфейс, который соответствует цветовой схеме клиента и т. Д.).
Диалог загрузки создается и отображается из класса, который не является производным от класса Activity (об этом я упоминаю, поскольку startActivityForResult () не может быть называется):
private void showLoadingDialog()
{
Intent intent = new Intent( this, ActivityDialogLoading.class );
intent.addFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
startActivity( intent );
isLoadingDialogShown = true;
}
Диалоговое окно отображается, когда приложение выполняет в фоновом режиме длительные асинхронные задачи.
Теперь, когда фоновые задачи завершены, я хочу закрыть диалог загрузки (В диалоге загрузки также есть кнопка Отмена , чтобы клиент мог прервать задачу, но это другое история).
Я не нашел способа получить ссылку на экземпляр запущенного ActivityDialogLoading класса для вызова метода finish () ...
Я использую способ немного сложнее - я переопределяю BroadcastReceiver , поэтому он принимает ссылку на ActivityDialogLoading в своем конструкторе. В OnResume () метода ActivityDialogLoading я регистрируюсь как получатель для переданного намерения.
Когда мне нужно закрыть диалог загрузки Я передаю намерение ... Есть ли лучший способ?
То же самое с другими словами: Каков наилучший способ закрыть действие, когда действие закрытия вызвано некоторым фоновым событием в механизме приложения?