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

prg*_*prg 2 android dialog android-lifecycle

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

谢谢

Anu*_*tal 15

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

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

但是,如果 System 出现一个对话框以获得权限,或者其他一些应用程序在 Activity 上显示一个 Dialog,它只会调用 OnPause(),因为新的 Activity 没有启动,并且只有前景焦点从 Activity 转移到 Dialog Box .

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

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


Prz*_*emo 7

大多数提议的答案都是错误的.这个/sf/answers/3809155451/有大部分真相,但不是全部真相.

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

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

还检查:Android:在什么情况下出现的Dialog会导致onPause()被调用?

  • @B.shruti`android.app.Dialog`?不,`dismiss` 不执行任何活动回调。为什么应该这样做? https://developer.android.com/guide/components/activities/activity-lifecycle - 你可以理解对于`dismiss` Activity 进入后台。不。正如我在回答中所说:`对话框必须写在单独的 Activity 上才能引起 onPause 调用`。像这里:/sf/ask/138555861/ 不要使用`Dialog`,尤其是在 MVVM 时代:/sf/ask/558417471/对话片段与对话 (2认同)

Ami*_*ale 5

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


Geo*_*rge 1

OnPause()并非在所有类型的对话框中都被调用,请检查其他答案以获取更多详细信息,因为我不会在此处复制所有内容。

  • 这个不对。当对话框出现在当前活动上时,不会调用任何生命周期方法。您可以通过将日志添加到生命周期活动来验证它。 (3认同)

归档时间:

查看次数:

9386 次

最近记录:

6 年,4 月 前