活动真正的生命周期

  

, <强>活动生命周期

  

理解活动的生命周期对应用程序开发来说是至关重要的,这样才能确保您的应用提供了一个很好的用户体验和妥善管理其资源。由于OPhone应用程序不控制自己的进程寿命,由OPhone运行时管理每个应用程序进程,但是每个活动的状态反过来会影响到OPhone运行时是否将终止当前活动和还是让它继续运行。

  

<强> Actvity堆栈

  

每个Actvity的状态由它所在活动栈中的位置所决定,所有当前正在运行的Actvity将遵循照后进先出的原则。当一个新的活动启动,当前的活动将移至堆栈的顶部,如果用户使用后按钮,或在前台活动被关闭,下一个活动将被激活并且移至到堆栈的顶部。这个过程如下图所示

  

被疃嬲纳芷?

  

<强>活动状态

  

随着活动的创建和销毁,也就会进出栈如上图所示,其中可能会经历以下四种状态:

  
      <李>活跃状态:这时候活动处于栈顶,且是可见的,有焦点的,能够接收用户输入前景Activity.OPhone运行时将试图不惜一切代价保持它活着,甚至杀死其他活动以确保它有它所需的资源。当另一个活动变成活跃时,当前的将变成暂停状态。   <李>停顿状态:在某些情况下,你的活动是可见的,但没有焦点,在这时候,Actvity处于停顿状态,例如,如果有一个透明或非全屏幕上的活动在你的Actvity上面,你的活动将。当处于停顿状态时,该Actvity仍被认为是活跃的,但是它不接受用户输入事件。在极端情况下,OPhone运行时将杀死暂停活动,以进一步回收资源。当一个Actvity完全被遮住时,它将进入停止状态。   <李>停止状态:当活动是不可见的时,活动处于停止状态.Activity将继续保留在内存中保持当前的所有状态和成员信息,假设系统别的地方需要内存的话,这时它是被回收对象的主要候选。当活动处于停止状态时,一定要保存当前数据和当前的UI状态,否则一旦活动退出或关闭时,当前的数据和UI状态就丢失了。   <李>不活跃的状态:活动被杀掉以后或者被启动以前,处于不活跃的状态。这时活动已被移除从活动堆栈中,需要重新启动才可以显示和使用。   
  

状态过渡具有不确定性并且由OPhone运行完全管理.OPhone运行时将首先杀掉处于停止状态的活动,在极端情况下,也会杀掉那些处于停顿状态的活动。
  为确保无缝的用户体验,这些状态之间的过渡对用户来说应该做到透明的。不管活动处于那种状态,最重要的是保留好UI状态和用户数据,一旦Actvity被激活,用户都能看到他想要的东西。

  

<>强如何监测Actvity的状态变化

  


  为了确保活动能够及时的响应状态的变化,OPhone提供了一系列的事件处理程序来处理活动的状态转移,参考下图和示例代码。

  

, <超级>

  

被疃嬲纳芷?

        视图plain 复制clipboard  print  ?      
      <李>,,,,李   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   
           Java代码      
      <李>,,,,李   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   <李>   <李>,,李   <李>   
     

在一个活动的完整的生命周期里,既创造和销毁之间,它会经过一个或多个不同状态之间的转移包括从可见的到不可见,从活动到活动。每一次状态的转移都将触发以上这些事件。

活动真正的生命周期