Android生命周期学习笔记


Android生命周期


Android中Activity的生命周期分两种情况:
            1、典型情况下的生命周期,在用户参与的情况下,Activity所经过的生命周期
            2、异常情况下的生命周期,指Activity被系统回收或者由于当前设备的Configuration发生改变从而导致的Activity被销毁重建。


典型情况下的生命周期:
            1)onCreate:表示Activity正在被创建。
            2)onRestart:表示Activity正在重新启动,当当前Activity从不可见重新变成可见状态时onRestart就会被调用。
            3)onStart:表示Activity正在被启动,此时Activity已经可见,但是还位于后台没有出现在前台,还无法和用户交互。
            4)onResume:表示Activity已经可见,并且出现在前台可以与用户交互。
            5)onPause:表示Activity正在停止。
            6)onStop:表示Activity即将停止。
            7)onDestroy:表示Activity即将被销毁。
Android生命周期学习笔记_第1张图片
     注意:
                1)onStart、onStop与onResume、onPause的区别
                        onStart、onStop是从Activity是否可见这个角度来回调的。
                        onResume、onPause是从Activity是否位于前台这个角度来回调的。
                2)从一个Activity(A)启动另一个Activity的周期(B)
                        A:onPause   B:onCreate   B:onStart   B:onResume   A:onStop
                3)在onPause方法中不能做耗时操作,否则启动另一个Activity时会用很长时间。




异常情况下的生命周期:

    情况一:资源相关的系统配置信息发生改变时导致Activity被杀死并重新创建。
                        
                           流程:
        
                                                   
    
    系统在发生异常情况下,会调用 onSaveInstanceState方法来保存当前Activity的状态,当Activity被系统重新创建时会把销毁前保存的Bundle对象作为参数传给onCreate方法和 onRestoreInstanceState。

    注:
        onSaveInstanceState方法的触发时机:
                1) 当用户按下HOME键时。
                2) 长按HOME键,选择运行其他的程序时。
                3) 按下电源按键(关闭屏幕显示)时。
                4) 从activity A中启动一个新的activity时。
                5) 屏幕方向切换时,例如从竖屏切换到横屏时。
        总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。
     onRestoreInstanceState方法的触发时机:只有当Activity出现异常被销毁时且需要重新创建时才会调用。 onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的
                
              情况二:资源内存不足导致低优先级的Activity被杀死
                    
                        Activity优先级的划分:
                            1、前台Activity:正在和用户交互的Activity,优先级最高
                            2、可见但非前台Activity:比如Activity中弹出了一个对话框,导致Activity可见但是位于后台无法和用户直接交互。
                            3、后台Activity:已经被暂停的Activity,比如执行了onStop方法,优先级最低













你可能感兴趣的:(android)