zoukankan      html  css  js  c++  java
  • ANDROID切换屏幕时的生命周期

    转:http://www.cnblogs.com/yjpjy/p/5123502.html

    老版本总结:

    1.不设置Activity的android:configChanges时 切屏会重新调用生命周期的方法,切横屏调用1次 切竖屏调用2次

    2.设置Activity的android:configChanges ="orientation"时,切横屏和竖屏都是调用1次生命周期

    3.设置Activity的android:configChanges = "orientation|KeyboardHidden"时切屏不会调用生命周期的方法,只会调用onConfigurationChanged方法

    api13以上发生了变化(转发自:http://www.cnblogs.com/xiaoQLu/p/3324503.html)

    如果想解决横竖屏切换时,activity不重新创建,需要在manifest中配置 android:configChanges="orientation|keyboardHidden"属性,当然在api>13的时候,你需要额外添加一个参数,就是 screenSize ,不添加这个,在api 13以上的手机是不会生效的。

                 1)api不同重新创建Activity的生命周期也有差别

          a)2.3上:onSaveInstanceState->onPause->onStop->onCreate->onStart->onRestoreInstanceState->onResume

          b)4.0上(3.2我没测试,只测试了4.0的):onPause->onSaveInstanceState->onStop->onCreate->onStart->onRestoreInstanceState->onResume

        2)不重新创建activity,只会调用 onConfigurationChanged

    targetSdkVersion会影响生命周期,targetSdkVersion在12及以下的话,设置了 android:configChanges="orientation|keyboardHidden" ,在机器上都不会重新创建activity,只会调用 onConfigurationChanged,如果设置targetSdkVersion>12的话,只在sdkVersion<=12的机器上有效果,>12的机器上activity还是会重新创建(需要加上screenSize才有效果)

    新版总结:

    (1)设置 android:configChanges="orientation" 和不设置这个属性,生命周期表现为重新创建activity

    (2)设置 android:configChanges="orientation|keyboardHidden",在2.3上表现为不重新创建activity,4.0如下

      a)android:targetSdkVersion<="12",生命周期表现为不重新创建activity

      b)android:targetSdkVersion>"12",表现为重新创建activity

    (3)设置 android:configChanges="orientation|keyboardHidden|screenSize",在2.3和4.0上都表现为不重新创建

    其余情况:


    当前Activity产生事件弹出Toast和AlertDialog的时候Activity的生命 
    周期不会有改变 
    Activity运行时按下HOME键(跟被完全覆盖是一样的):onSaveInstanceState --> 
    onPause --> onStop onRestart -->onStart--->onResume 
    Activity未被完全覆盖只是失去焦点:onPause--->onResume

  • 相关阅读:
    Scrapy选择器和持久化
    SQLAlchemy
    Python数据库连接池DBUtils
    flask应用上下文和g
    flask请求上下文源码解析
    flask的session源码流程和第三方组件
    430软狗不喂狗后系统起不来的问题
    VS2008 快捷键大全
    未能加载或程序集“XXXX,Version=0.0.0.0,Culter=neutral,PublicKeyToken=null”或它的某一个依赖项。试图加载格式不正确的程序。
    用vs2008打开vs2005项目
  • 原文地址:https://www.cnblogs.com/shixm/p/5779512.html
Copyright © 2011-2022 走看看