Android 对话框的生命周期事件
Android life cycle event on dialog
您能否解释一下应用程序出现对话框时调用了哪个 activity 生命周期方法?我很困惑它是在调用 onResume() 还是 onPause() 方法。
谢谢
这个答案不完全正确
查看下面的其他答案以获得更好的信息。很久以前就接受了,删不掉
首先你应该了解Android Lifecycle.
如您所见,onPause 在 activity 暂停时调用,也就是您的对话框出现时,onResume 回到 activity 后,当它再次获得焦点时。
正如另一位用户所建议的,您可以使用一些 Log
标签来查看控制台上发生的事情,或者 Toasts
在屏幕上查看:How do I write outputs to the Log in Android?
它调用 onPause()
当对话框出现在现有 activity 之上时,现有 activity 将通过调用 onPause() 进入部分不可见状态。
注意,建议的答案很少是错误的。这个 have most of truth, but not whole truth. And that 似乎补充了我的答案(我自己还没有检查过)。
对话框出现后调用 onPause 是不正确的。此对话框必须写在单独的 Activity 上才能引起 onPause 调用。但是对话框通常写在支持库的 DialogFragment 上 - reference
you should use a DialogFragment as a container for your dialog
同时检查:Android: Under what circumstances would a Dialog appearing cause onPause() to be called?
onPause
未被调用,因为您仍在当前 activity,因此当您在当前 activity 上显示对话框时,没有 activity 生命周期方法将被调用。
并非所有类型的对话框都调用 OnPause()。
例如,当使用 AlertDialog 或 DialogFragment 时,它永远不会调用 OnPause(),因为它们是 activity.
的一部分
但是,如果从系统中出现一个对话框以获得权限,或者某些其他应用程序在 activity 上显示一个对话框,它只会调用 OnPause(),因为新的 activity 没有启动并且只有前景焦点从 activity 转移到对话框。
例如,当我们启用 Whatsapp 发送消息弹出窗口时,如果弹出窗口在您的 activity 为 运行 时出现,它只会调用 OnPause()。
您应该自己尝试一下以便更好地理解。
Activity里面如果打开任何对话框,那么那个对话框不会影响到activity生命周期。所以我已经尝试过这个了。所以 onPause() 没有被调用。如有任何疑问,请自行实施,您会更加清楚。
您能否解释一下应用程序出现对话框时调用了哪个 activity 生命周期方法?我很困惑它是在调用 onResume() 还是 onPause() 方法。
谢谢
这个答案不完全正确
查看下面的其他答案以获得更好的信息。很久以前就接受了,删不掉
首先你应该了解Android Lifecycle.
如您所见,onPause 在 activity 暂停时调用,也就是您的对话框出现时,onResume 回到 activity 后,当它再次获得焦点时。
正如另一位用户所建议的,您可以使用一些 Log
标签来查看控制台上发生的事情,或者 Toasts
在屏幕上查看:How do I write outputs to the Log in Android?
它调用 onPause()
当对话框出现在现有 activity 之上时,现有 activity 将通过调用 onPause() 进入部分不可见状态。
注意,建议的答案很少是错误的。这个
对话框出现后调用 onPause 是不正确的。此对话框必须写在单独的 Activity 上才能引起 onPause 调用。但是对话框通常写在支持库的 DialogFragment 上 - reference
you should use a DialogFragment as a container for your dialog
同时检查:Android: Under what circumstances would a Dialog appearing cause onPause() to be called?
onPause
未被调用,因为您仍在当前 activity,因此当您在当前 activity 上显示对话框时,没有 activity 生命周期方法将被调用。
并非所有类型的对话框都调用 OnPause()。
例如,当使用 AlertDialog 或 DialogFragment 时,它永远不会调用 OnPause(),因为它们是 activity.
的一部分但是,如果从系统中出现一个对话框以获得权限,或者某些其他应用程序在 activity 上显示一个对话框,它只会调用 OnPause(),因为新的 activity 没有启动并且只有前景焦点从 activity 转移到对话框。
例如,当我们启用 Whatsapp 发送消息弹出窗口时,如果弹出窗口在您的 activity 为 运行 时出现,它只会调用 OnPause()。
您应该自己尝试一下以便更好地理解。
Activity里面如果打开任何对话框,那么那个对话框不会影响到activity生命周期。所以我已经尝试过这个了。所以 onPause() 没有被调用。如有任何疑问,请自行实施,您会更加清楚。