在测试期间,我没有发现onStart()
在没有onResume()
的情况下运行的情况。
如果有人能像我发现的this is the closest question一样阐明这个话题,但是没有一个答案是针对开始/继续部分的,只是针对停止/暂停部分的。
如果没有相关情况,是否可以忽略onStart()
或onResume()
而不使用两者,因为这似乎是多余的吗?
答案 0 :(得分:1)
两个例子浮出水面:
1。)“系统”对话框在您的应用上打开(例如,通过Intent.createChooser),但取消了该对话框
2。)在多窗口模式下,点击另一个应用程序,然后点击您的应用程序(您将收到onPause / onResume而不是onStop / onStart)
根据我的经验,真正需要onPause()
的唯一时间是您自己编写相机。
如果要在onPause之后显示DialogFragment,通常需要等到onResumeFragments / onPostResume。
答案 1 :(得分:1)
活动的可见生命周期发生在调用onStart()到相应的调用onStop()之间。在此期间,用户可以在屏幕上看到该活动,尽管该活动可能不在前台并与用户进行交互。在这两种方法之间,您可以维护向用户显示活动所需的资源。例如,您可以在onStart()中注册一个BroadcastReceiver来监视影响您的UI的更改,并在用户不再看到您所显示的内容时在onStop()中取消注册。随着活动对用户可见和隐藏,可以多次调用onStart()和onStop()方法。
活动的前景生存期发生在调用onResume()到相应的调用onPause()之间。在这段时间内,活动位于所有其他活动的前面,并且与用户进行交互。活动可以经常在恢复状态和暂停状态之间进行切换-例如,当设备进入睡眠状态,何时发送活动结果,何时发送新意图时-因此这些方法中的代码应相当轻巧。 >
据我了解,onStart()
和onStop()
代表可见性,而onResume()
和onPause()
代表优先级。
例如,如果您打开应用程序,则将同时调用onStart()
和onResume()
。在您的应用仍然打开的情况下,说您然后收到一条Facebook消息并打开聊天。 onPause()
将被调用,但onStop()
将不会被调用。您的应用不再位于前台,但仍然可见。
编辑:
我知道我链接了活动文档,但是根据Fragment documentation:
onStart()使该片段对用户可见(基于正在启动的包含活动)。
onResume()使片段开始与用户交互(基于要恢复的包含活动)。
onPause()片段不再与用户交互,因为它的活动被暂停或片段操作正在活动中对其进行修改。
onStop()片段不再可见,因为它的活动已停止或片段操作正在活动中对其进行修改。
同样的原则适用。在大多数情况下,这只是来自活动的直接调用。