美文网首页
Activity 生命周期

Activity 生命周期

作者: 大盗海洲 | 来源:发表于2019-06-15 21:01 被阅读0次

    FirstActivity startActivity SecondActivity

    E/FirstActivity: onPause
    E/SecondActivity: onCreate
    E/SecondActivity: onStart
    E/SecondActivity: onResume
    E/FirstActivity: onStop
    

    FirstActivity startActivity SecondActivity ,然后 finish SecondActivity

    E/SecondActivity: onPause
    E/FirstActivity: onRestart
    E/FirstActivity: onStart
    E/FirstActivity: onResume
    E/SecondActivity: onStop
    E/SecondActivity: onDestroy
    

    按后键退回桌面FirstActivity生命周期

    E/FirstActivity: onPause
    E/FirstActivity: onStop
    

    从桌面进入FirstActivity

    E/FirstActivity: onRestart
    E/FirstActivity: onStart
    E/FirstActivity: onResume
    

    横竖屏切换,manifest不配置configChanges,FirstActivity生命周期

    E/FirstActivity: onPause
    E/FirstActivity: onStop
    E/FirstActivity: onRetainCustomNonConfigurationInstance:
    E/FirstActivity: onDestroy
    E/FirstActivity: getLastNonConfigurationInstance:
    E/FirstActivity: onCreate
    E/FirstActivity: onStart
    E/FirstActivity: onResume
    

    这是因为通常情况下软件在横竖屏之间切换,界面的高宽会发生转换,从而可能会要求不同的布局。具体的布局切换可以通过如下两种方法来实现:
    1)在res目录下建立layout-land和layout-port目录,相应的layout文件名不变,比如main.xml。layout-land是横屏的layout,layout-port是竖屏的layout,其他的不用管,横竖屏切换时程序自己会调用Activity的onCreate方法,从而根据当前横竖屏情况自动加载响应的布局。
    2)假如布局资源是不一样又不按照如上设置,则需要通过java代码来判断当前是横屏还是竖屏然后来加载相应的xml布局文件(比如mainP为竖屏mainL为横屏)。因为当屏幕变为横屏的时候,系统会重新呼叫当前Activity的onCreate方法,你可以把以下方法放在你的onCreate中来检查当前的方向,然后可以让你的setContentView来载入不同的layout xml。
    3)切换前对数据进行保存,切换重启后对数据进行恢复,具体操作的步骤如下:

    • 重写Activity.onRetainNonConfigurationInstance(),用户横竖屏切换前保存数据
    • 在onCreate()函数中调用getLastNonConfigurationInstance(),获取onRetainNonConfigurationInstance()保存的数据
      链接:https://www.jianshu.com/p/ffd7e4886b9c

    横竖屏切换,配置configChanges=orientation,FirstActivity生命周期

    E/FirstActivity: onConfigurationChanged:{1.0 460mcc7mnc [zh_CN_#Hans,en_GB] ldltr sw360dp w640dp h336dp 480dpi nrml long land finger -keyb/v/h -nav/h winConfig={ mBounds=Rect(0, 0 - 1080, 1920) mAppBounds=Rect(0, 0 - 1920, 1080) mWindowingMode=fullscreen mActivityType=standard} nonFullScreen=0 suim:1 s.29}
    

    只调用了onConfigurationChanged 没有再走其他生命周期

    注意:dialog弹框activity 的生命周期不受影响

    相关文章

      网友评论

          本文标题:Activity 生命周期

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