В своей деятельности я часто использую эту идиому:
@Override
public void onDestroy() {
super.onDestroy();
if (isFinishing() != true) return;
// do some final cleanup since we're going away for good
}
Фрагмент имеет метод onDestroy(), но что эквивалентно isFinishing()? Должен ли я просто проверить getActivity().isFinishing() внутри фрагмента onDestroy()?
ИЗМЕНИТЬ ДОБАВИТЬ:
Вот обратные вызовы (по порядку), которые я получаю при различных обстоятельствах, вместе с тем, возвращает ли getActivity() значение null или non-null и, если не null, значение getActivity().isFinishing():
Сценарий # 1: DialogFragment показывает и пользователь отбрасывает кнопку (то есть нужно освобождать ссылки):
onDismiss(): activity = non-null, finishing = false
onDestroy(): activity = non-null, finishing = false
Сценарий №2: DialogFragment отображается, а родительская активность заканчивается (т.е. нужно освобождать ссылки):
onDestroy(): activity = non-null, finishing = true
onDismiss(): activity = null, finishing = n/a
Сценарий №3: DialogFragment отображается, и ОС временно уничтожает родительскую активность (т.е. не следует отпускать ссылки):
onDestroy(): activity = non-null, finishing = false
onDismiss(): activity = null, finishing = n/a