android lifecycle之onpause

来源:互联网 发布:gta5驾驶优化mod 编辑:程序博客网 时间:2024/04/30 08:02

今天又把activity的生命周期学习了一遍,发现了一个问题--对onpause的调用还不是特别的清楚。所以就查阅了一些资料来加强一下对这部分的学习。

OnPause(暂停)

Paused状态是当 Activity 暂时暗下來,退到背景页面的状态。

假如当我们的电话来了时,都会让原来正在运行的Activity退到背景页面。新出现的toast界面元件遮住了原来的Activity页面。Activity处在Pause的状态时,使用者无法与原Activity互动。



Android的七个回调函数可以分为一下3部分:

1. 资源分配 (Create/Destroy)

    完整的 Activity 生命週期由Create状态開始,由Destroy状态結束。 建立(Create)时分配资源,销毁(Destroy)时释放资源。

2. 可见与不可见(Start/ReStart/Stop)

     当Activity 运行到Start状态时,就可以在屏幕上看到这个 Activity。相反地,当Activity 运行到Stop状态时,这个Activity 就会从屏幕上消失。

     当使用者按下 Back 按纽回到上一个 Activity 时,会先到 Restart 状态,再到一般的 Start 状态。

3. 使用者能否直接存取屏幕(Resume/Pause)

    当有 短消息、电话等讯息进入时,原來的 Activity 会退到Pause状态,暂时放弃直接存取屏幕的能力,被中斷到背景去,將前景交給优先級高的事件。当这些优先级
高的事件处理完后,Activity 就改进入Resume状态,此时又直接存取屏幕。

android的基本运作流程:

1   一般型

onCreate -> onStart -> onResume

启动一个 Activity 的基本流程是:分配资源给这个Activity(Create 状态),然后將 Activity 內容显示到屏幕上(Start 状态)。在一切就绪后,取得屏幕的控制权(Resume 状态),使用者可以开始使用这个程式。

2  跳转到另一个 Activity

onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1)

这是个先不改变的原本的 Activity,再交出直接存取屏幕能力(Pause 状态)的过程。 直到 Activity 2 完成一般启动流程后,Activity 1 才会被停止。

3 返回到原 Activity

onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2)

点 Back 按钮可以回到原本的 Activity。

4 退出結束

onPause -> onStop -> onDestroy

如果程式中有直接呼叫finish()函数来关闭 Activity的话,系统则调用 onDestroy      暂停(Pause),停止(Stop),然后销毁(Destroy)。

5 重新启动activity

    onCreate -> onStart -> onResume被回收掉的 Activity 一旦又重新被呼叫时,会像一般启动一样再次呼叫 Activity 的 onCreate 函数。