Activity生命周期分析

作者: myserendipit | 来源:发表于2016-03-19 12:31 被阅读138次

    Activity生命周期分析

    标准情况下

    1. onCreate():表示Activity正在创建中,初始化工作,比如调用setContentView加载布局资源、初始化Activity所需的数据
    2. onRestart():表示Activity正在重新启动,从不可见为可见状态时调用。
    3. onStart():表示Activity正在被启动,即将开始,已经后台可见,前台不可见。理解为Activity已经显示出来了但是我们看不到。
    4. onResume():表示Activity已经前台显示出来并且可以操作了。注意:onStart是在后台,onResume是在前台显示。
    5. onPause:表示Activity正在停止,一般情况下紧接着onStop将会调用。在特定情况下,如果这个时候快速回到当前Activity,那么onResume会被调用。可以在onPause中存储一些数据,但是不能进行耗时操作,因为新的Activity必须等前一个Activity调用完onPause方法后才会调用onResume方法,显示出来。
    6. onStop:表示Activity即将停止,可以做一些稍微重量级的回收工作,但也不能太耗时。
    7. onDestroy:表示Activity即将被销毁,可以在其中做一些回收工作和最终的资源释放。

    补充:

    • 当打开新的Activity后,切换到桌面,调用:onPause()->onStop();
    • 如果是新Activity是透明主题,那么老Activity不会调用onStop();
    • 当用户从桌面再次回到Activity后:onRestart()->onStart->onResume();
    • 打开一个新的Activity,是老Activity的onPause()先调用,再调用新的Activity的onResume()方法;也就是新Activity需要等老Act调用完onPasue()后才能显示出来,所以不能在onPause中进行耗时操作。

    异常情况下生命周期分析

    1.资源相关的配置发生改变

    比如说横屏手机和竖屏手机会拿到两张不同的图片

    插句话:
    在开发android的应用中,有时候需要限制横竖屏切换。只需要在AndroidManifest.xml文件中加入android:screenOrientation属性限制。
    android:screenOrientation="landscape"是限制此页面横屏显示, 
    android:screenOrientation="portrait"是限制此页面数竖屏显示。 
    android:screenOrientation="landscape"是限制此页面横屏显示, 
    android:screenOrientation="portrait"是限制此页面数竖屏显示。   
    

    当前Activity处于竖屏状态,如果突然旋转屏幕,由于系统配置发生了改变,在默认情况下,Activity就会被销毁并且重新创建;当然我们也可以阻止系统重新创建我们的Activity。

    正常情况下的销毁重建:


    销毁:当系统配置发生改变后,Activity会被销毁,其onPause,onStop,onDestroy方法都会调用,由于是异常状态下终止,所以会调用onSaveInstanceState方法来保存当前Activity的状态(视图结构、输入的数据、ListView滚动的位置等);这个方法的调用时机是在onStop之前,可能在onPause之前或之后。

    恢复:重新创建时会调用onRestoreInstanceState,把刚刚onSaveInstanceState方法所保存的Bundle对象传递给onRestoreInstanceState和onCreate方法。onRestoreInstance发生在onStart之后。

    相关文章

      网友评论

        本文标题:Activity生命周期分析

        本文链接:https://www.haomeiwen.com/subject/vpchlttx.html