zoukankan      html  css  js  c++  java
  • Activity的生命周期

    Activity 有三个状态:

      当它在屏幕前台时,响应用户操作的Activity, 它是激活或运行状态.

      当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时(如右图), 它处于暂停状态.

      当它完全被另一个Activity覆盖时则处于停止状态.


     

      * 开启:onCreate()-->onStart()-->onResume()

      * 关闭:onPause()-->onStop()-->onDestroy()

      * 最小化:onPause()-->onStop()

      * 最大化:onRestart()-->onStart()-->onResume()


    BACK键

       按Back键时,应用程序将结束,将先后调用onPause()->onStop()->onDestory()三个方法。
       再次启动App时,会执行onCreate()->onStart()->onResume()


    HOME键

       当我们按HOME的时候,Activity先后执行了onPause()->onStop()这两个方法,这时候应用程序并没有销毁。而当我们从桌面再次启动应用程序时,则先后分别执行了onRestart()->onStart()->onResume()三个方法

       注意:当Activity在后台时候,如果系统内存不够用,后台的Activity很有可能会被强制销毁回收内存的,那么一定会触发onSaveInstanceState(Bundle outState) 方法,我们可以把想保存的数据保存在 outState对象里,等Activity被重新创建执行onCreate(Bundle saveInstanceState) 从参数saveInstanceState再读取保存的数据


    • 锁屏:onPause()->onStop()
    • 解锁:onStart()->onResume()


    ActivityA 打开 ActivityB

    • A:onPause()
    • B:onCreate()
    • B:onStart()
    • B:onResume()
    • A:onStop()
    • 但是,如果ActivityB的样式是Dialog样式,B没有完全遮挡A,ActivityB的生命周期跟刚才一样,但是ActivityA并没有执行onStop()

     

    ActivityB 返回 ActivityA

    依次会执行:

    • B:onPause()
    • A:onRestart()
    • A:onStart()
    • A:onResume()
    • B:onStop()
    • B:onDestory()

    横竖屏切换activity的生命周期

      * 先销毁activity,然后在重新创建一个新的activity页面

      * 固定activity的屏幕朝向 screenOrientation

      * landscape :横屏

      * portrait :竖屏,默认方向

      * sensor :自适应

      * 使activity不敏感屏幕朝向的变化

           android:configChanges="orientation|keyboard|screenSize"
    

     

  • 相关阅读:
    springboot项目创建父级依赖
    springboot整合测试
    springboot中使用RedisTemplate实现redis数据缓存
    springboot整合redis
    springboot整合shiro
    配置 maven 环境变量
    虚拟机和主机之间一系列工具包,开启双向复制粘贴后导致的内存占用问题
    mysql服务无法启动的问题
    Linux学习遇到的问题(权限问题:例如无法创建目录"**": 权限不够"等等)
    Windows 10 配置Git 环境变量(还有:安装git后,鼠标右键没有“git bush here”)
  • 原文地址:https://www.cnblogs.com/loaderman/p/6415763.html
Copyright © 2011-2022 走看看