什么是Activity.isFinishing()的片段等价物?

jph*_*jph 17 android android-lifecycle android-fragments android-activity

在我的活动中,我经常使用这个成语:

@Override
public void onDestroy() {
    super.onDestroy();
    if (isFinishing() != true) return;
    // do some final cleanup since we're going away for good
}
Run Code Online (Sandbox Code Playgroud)

片段有一个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
Run Code Online (Sandbox Code Playgroud)

场景#2: DialogFragment正在显示并且父活动完成(即需要发布引用):

onDestroy(): activity = non-null, finishing = true
onDismiss(): activity = null, finishing = n/a
Run Code Online (Sandbox Code Playgroud)

场景#3: DialogFragment正在显示并且OS暂时销毁父活动(即不应该释放引用):

onDestroy(): activity = non-null, finishing = false
onDismiss(): activity = null, finishing = n/a
Run Code Online (Sandbox Code Playgroud)

kco*_*ock 14

片段有一个方法isRemoving(),当从Activity中删除片段时,该方法为true:

如果此片段当前正从其活动中删除,则返回true.这不是它的活动是否正在完成,而是它是否正在被从其活动中删除.

  • 只是给别人一个注意事项:在方向更改和用户按下后退按钮时,`isRemoving()= false` ...似乎只有在显式调用`.remove(Fragment)`时才调用它? (2认同)