美文网首页
activity的生命周期

activity的生命周期

作者: 微斯人_吾谁与归 | 来源:发表于2019-11-29 00:45 被阅读0次
    20180104150230363.png

    1.在activity的生命周期中存在四种状态,分别为运行、暂停、停止和不存在。每次状态转换Activity方法会发消息通知activity。
    回退键会调用onDestory()方法,Home键会调用onStop()方法

    • 当处于运行状态的Activity可以用户交互
    • 当处于运行或暂停状态的Activity用户可见
    • 当处于运行、暂停、停止状态的Activity存在,有内存实例

    2.任何时候只有一个Activity处于用户能交互的运行状态。通过覆盖onCreate(Bundle)方法可以预处理一些UI相关工作如:

    • 实例化组件并将其放在屏幕上
    • 引用实例化组件
    • 为组件设立监听
    • 访问外部数据模型

    当第一个Activity跳转到第二个Activity时,首先执行的是第一个Activity的OnPaused方法,然后执行第二个Activity的OnCreate、OnStart、OnResumed方法,等到第二个Activity完全加载完毕(可显示状态)以后才会执行第一个Activity的Onstopped方法,当然跳转过程不会使第一个Activity被销毁。
    当从第二个Activity返回到第一个Activity时,首先执行的是第二个Activity的OnPaused方法,然后调用第一个Activity的OnRestart方法、OnStart方法、OnResumed方法,最后第一个Activity已经加载完毕(可显示状态),调用第二个Activity的OnStopped、OnDestroy方法来销毁它。

    设备旋转与Activity生命周期

    1.横竖屏切换
    2.保存数据
    覆盖protected void onSaveInstanceState(Bundle outState)
    除非按后退键,不然该方法将在onStop()方法被调用之前调用。在创建Activity时

    @Override
    public void onCreate(Bundle savedInstanceState){
    super.onCreate(saveInsatnceState);
    ......}
    

    我们通过调用activity超类方法,通过接受传入的bundle,取出保存在bundle的视图状态数据,activity的视图得以构建。
    方法protected void onSaveInstanceState(Bundle outState)默认要求将所有activity视图将自身状态数保存到Bundle中,Bundle存储字符串和限定类型值的映射关系。覆盖该方法,将一些需要保存的数据也写入Bundle,在再次创建时也可取出。该方法会在按Back键或是系统突然崩溃时失效。

    activity内存清理现状

    • 在低内存状况下,Android直接从内存清除整个应用系,连带自身的所有activity.目前Android还做不到只删除单个Activity
    • 进程存在优先级:运行>暂停>停止.当需要释放资源首先目标时低优先级的进程。用户体验至上,操作系统不会杀掉带有可见activity的进程。除非重启或死机。

    相关文章

      网友评论

          本文标题:activity的生命周期

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