私の活動では、この慣用句をよく使います。
@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 を返すか 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
が表示され、OS が親アクティビティを一時的に破棄します (つまり、参照を解放しません)。
onDestroy(): activity = non-null, finishing = false
onDismiss(): activity = null, finishing = n/a
ベストアンサー1
フラグメントには、isRemoving()
これは、フラグメントがアクティビティから削除されるときに当てはまります。
このフラグメントが現在アクティビティから削除されている場合は true を返します。これは、アクティビティが終了しているかどうかではなく、アクティビティから削除されている途中であるかどうかを示します。