Activity生命周期

来源:互联网 发布:红帽linux 10天就重启 编辑:程序博客网 时间:2024/06/17 21:54

  An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(View). While activities are often presented to the user as full-screen windows, they can also be used in other ways: as floating windows (via a theme with windowIsFloating set) or embedded inside of another activity (using ActivityGroup).
  

Activity的4种状态:

1.active或者running. 当activity在屏幕的前端(在栈的顶端)

2.paused. 当activity失去焦点但依然可见(非全屏或透明的activity在此activity的上面并且获得焦点)。一个paused activity是完全存活的,它保留了所有的状态和成员信息并且是附着到窗口管理器的,但是在内存极端低的情况下有可能被系统杀死。

3.stopped. 当一个activity被完全遮挡的时候。此时,它依然保留了所有的状态的成员信息,但是它不再对用户可见,所有它的窗口被隐藏并且更容易被系统杀死。

4.dropped.当一个activity处于paused或stopped状态时,系统可以要求它finish或者杀死它所在的进程,以将activity从内存中移除。当它再次显示在时,它必须被restarted并且回复之前的状态。

Activity生命周期

这里写图片描述

1.acitvity的整个生命周期发生在第一次调用onCreate(Bundle) 到最后一次调用onDestroy().

2.activity的可见生命周期发生在onsStart()和onStop()之间。可以在这两个方法之间保留对用户可见的资源。比如可以在onStart()注册影响UI的广播,在onStop()注销掉这个广播。

3.activity的前台生命周期发生在onResume()和onPause()之间。activity可能频繁的在resumed和paused之间切换,所以这两个方法的代码应该是轻量级的。

这里写图片描述

  在onPause()之后,activity所在进程可能被系统杀死,所以应该在onPause()方法里保存持久化数据。此外方法onSaveInstanceState(Bundle)会在activity进入到后台状态之前被调用,可以在这里保存activity的动态实例状态,以便在onCreate()恢复。由于onSaveInstanceState并不属于生命周期,所以并不保证调用。
  从honeycomb开始,app在onstop()返回之前是不会进入到killable状态的,这意味着onSaveInstanceState()可能被调用(在onPause()之后被安全调用)。