对话框上的Android生命周期事件

时间:2016-03-17 05:13:00

标签: android dialog android-lifecycle

您能否解释一下当应用程序出现对话框时调用哪个活动生命周期方法?我很困惑它是调用onResume()还是onPause()方法。

由于

6 个答案:

答案 0 :(得分:6)

大多数提议的答案都是错误的。这https://stackoverflow.com/a/54416506/1714102有大部分真理,但不是全部真相。

在对话框出现后调用 onPause 并非如此。此对话框必须写在单独的Activity上才能导致 onPause 调用。但是对话框通常在支持库的DialogFragment上编写,参考:https://developer.android.com/guide/topics/ui/dialogs.html

  

您应该使用DialogFragment作为对话框的容器

同时检查:Android: Under what circumstances would a Dialog appearing cause onPause() to be called?

答案 1 :(得分:2)

它调用onPause()

当对话框出现在现有活动之上时,现有活动将通过调用onPause()移动到部分不可见状态。

答案 2 :(得分:2)

onPause 之所以没有被调用,是因为您仍处于当前活动中,因此,在显示当前活动对话框时,不会调用活动生命周期方法。

答案 3 :(得分:1)

首先,您应该了解 Android Lifecycle

正如您所见,当活动暂停时调用 onPause ,即对话框出现时调用 onBause ,返回活动后 onResume 重新聚焦。

正如其他用户建议的那样,您可以使用一些Log代码来查看控制台上发生的情况,或Toasts在屏幕上看到它:How do I write outputs to the Log in Android?

答案 4 :(得分:1)

Activity 内部如果打开任何对话框,则该对话框不会影响 Activity 生命周期。所以我已经尝试过这个了。所以 onPause() 没有被调用。如果有任何疑问,请实施您的自我,您可以获得更清晰的信息。

答案 5 :(得分:0)

并非在所有类型的对话框中都调用OnPause()。

例如,当使用AlertDialog或DialogFragment时,它将永远不会调用OnPause(),因为它们是活动的一部分。

但是,如果从系统出现权限对话框或某个其他应用程序显示活动对话框,则该对话框将仅调用OnPause(),因为未启动新活动,并且只有前台焦点从该活动转移到了对话框。

例如,当我们启用Whatsapp发送消息弹出窗口时,如果弹出窗口在您的活动运行时出现,它将仅调用OnPause()。

您应该自行尝试以更好地理解。