Activity生命周期

来源:互联网 发布:文怡 淘宝 编辑:程序博客网 时间:2024/05/16 09:22

Activity的生命周期

通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要。 Activity 的生命周期会直接受到 Activity 与其他 Activity、其任务及返回栈的关联性的影响。
Activity 基本上以三种状态存在:
Resume
此 Activity 位于屏幕前台并具有用户焦点。(有时也将此状态称作“运行中”。)
Pause
另一个 Activity 位于屏幕前台并具有用户焦点,但此 Activity 仍可见。也就是说,另一个 Activity 显示在此 Activity 上方,并且该 Activity 部分透明或未覆盖整个屏幕。 暂停的 Activity 处于完全活动状态(Activity 对象保留在内存中,它保留了所有状态和成员信息,并与窗口管理器保持连接),但在内存极度不足的情况下,可能会被系统终止。
Stop
该 Activity 被另一个 Activity 完全遮盖(该 Activity 目前位于“后台”)。 已停止的 Activity 同样仍处于活动状态(Activity 对象保留在内存中,它保留了所有状态和成员信息,但未与窗口管理器连接)。 不过,它对用户不再可见,在他处需要内存时可能会被系统终止。
(Activity的生命周期图如下:)

如果 Activity 处于暂停或停止状态,系统可通过要求其结束(调用其 finish() 方法)或直接终止其进程,将其从内存中删除。(将其结束或终止后)再次打开 Activity 时,必须重建。

结合具体情况说明下Activity的生命周期:

打开不透明的Activity,然后再返回第一个Activity

这种情况下,第一个activity经历的生命周期如下:

若此时点击回退栈,会执行如下生命周期方法:


若我们点击Home键:


此时经历的生命周期如下:

(跳转到透明的Activity,若想把 Activity设置成透明:配置android:theme="@android:style/Theme.Translucent" )


此时,经历的生命周期如下:

(相信小伙伴已经明白了各大生命周期,这里再强调说明一下:
onPause是指用户可见不可交互,onStop是指当前activity完全被覆盖即不可见不可交互状态,执行到onStop一定经过了onPause方法,因为activity的生命周期是顺序执行的

Activty在手机屏幕旋转时的生命周期

Activty在手机屏幕旋转时的生命周期大概可分为两种
①当清单文件中设置
android:configChanges="orientation|screenSize"
或者将屏幕方向固定时:
android:screenOrientation="portrait"
它不会进行销毁当前Activity会执行以下生命周期方法:

(若是定义了configChanges属性会进行回调)
    @Override    public void onConfigurationChanged(Configuration newConfig) {        super.onConfigurationChanged(newConfig);    }
②当我们没有进行设置这两个属性的话,屏幕旋转会执行如下方法:

会对当前activity进行销毁再新建,此时我们需要若需要在Activity中保存就一些数据,就需要在activity的的回调事件中执行,关于要保存Activity中的数据,将会在下一篇博客中详细说道。
1 0