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

问题描述 投票:2回答:5

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

谢谢

android dialog android-lifecycle
5个回答
1
投票

首先你应该了解Android Lifecycle

正如您所看到的,onPause在活动暂停时调用,即对话框出现时调用,onResume返回活动后再次获得焦点。

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


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?


2
投票

它调用onPause()

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


2
投票

由于您仍处于当前活动状态,因此未调用onPause,因此当您在当前活动上显示对话框时,将不会调用任何活动生命周期方法。


0
投票

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

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

但是,如果系统显示一个对话框以获取权限,或者某个其他应用程序显示对活动的对话框,则它将仅调用OnPause(),因为未启动新活动且只有前景焦点从活动转移到对话框。

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

你应该自己尝试一下,以便更好地理解。

© www.soinside.com 2019 - 2024. All rights reserved.