如果 activity 正在完成,如何防止调用 onCreate/onCreateView 方法

How to prevent the calls to onCreate/onCreateView methods if the activity is finishing

我有一个 ActivityA 并且有一个 fragmentA

onAttach() fragmentA 方法,我需要检查一些条件,如果失败,我需要完成 activity。 我正在通过调用 getActivity().finish() 来完成 activity。

甚至在我调用finish方法后,它仍然在调用fragmentA中的onCreate()onCreateView()onViewCreated()方法。

有什么办法可以阻止这些电话吗?

正如@DeeV 评论的那样,我会在附加 Fragment 之前检查条件。在这种情况下,您根本不必处理片段生命周期,这是一种更简洁的方法。

如果这不可能,还有一个 hacky 方法。您可以在 onAttach() 中调用 finish(),然后使用 activity 的方法 isFinishing(),其中 returns 一个 boolean 标志。我认为这应该可以解决问题。

例如在片段的 onCreate 方法中:

if (getActivity().isFinishing()) {
   // finish was called in onAttach
}