美文网首页
Activity的一些事

Activity的一些事

作者: 懒猫1105 | 来源:发表于2018-06-24 23:32 被阅读0次

    Activity的一些事

    1. Activity的生命周期

    1、启动MainActivity,按下home键

    启动MainActivity

    I: MainActivity onCreate: 
    I: MainActivity onStart: 
    I: MainActivity onResume: 
    

    按下home键

    I: MainActivity onPause: 
    I: MainActivity onStop:
    

    2、 启动MainActivity,再启动SecondActivity,再按下back键

    启动MainActivity

    I: MainActivity onCreate: 
    I: MainActivity onStart: 
    I: MainActivity onResume: 
    

    启动SecondActivity

    I: MainActivity onPause: 
    I: MainActivity onStop: 
    I: SecondActivity onCreate: 
    I: SecondActivity onStart: 
    I: SecondActivity onResume: 
    

    按下back键

    I: SecondActivity onPause: 
    I: MainActivity onStart: 
    I: MainActivity onResume: 
    I: SecondActivity onStop: 
    I: SecondActivity onDestroy: 
    

    3、 启动MainActivity,旋转屏幕,再次旋转屏幕

    启动MainActivity

    I: MainActivity onCreate: 
    I: MainActivity onStart: 
    I: MainActivity onResume: 
    

    旋转屏幕(旋转至横屏)

    I: MainActivity onPause: 
    I: MainActivity onSaveInstanceState: 
    I: MainActivity onStop: 
    I: MainActivity onDestroy: 
    I: MainActivity onCreate: 
    I: MainActivity onStart: 
    I: MainActivity onRestoreInstanceState: 
    I: MainActivity onResume: 
    

    再次旋转屏幕(旋转至竖屏)

    I: MainActivity onPause: 
    I: MainActivity onSaveInstanceState: 
    I: MainActivity onStop: 
    I: MainActivity onDestroy: 
    I: MainActivity onCreate: 
    I: MainActivity onStart: 
    I: MainActivity onRestoreInstanceState: 
    I: MainActivity onResume: 
    
    Activity任务栈

    App启动时候创建一个任务栈,activity被保存在栈中进行管理。

    Activity启动模式
    1. AndroidMainifest.xml配置android:launchMode属性

      • standard 默认模式,每次都新建一个Activity加入栈
      • singleTop 启动activity时,会先判断任务栈顶部是否等于要启动的activity,如果是则直接引用,不是则创建新的
        • 这种方式虽然不会重新创建activity,但是会回调onNetIntent方法
      • singleTask 启动activity时,检测栈中是否有要启动的activity,如果有则销毁要启动activity之上的activity,直接使用,没有则新建activity。
        • 如果是别的app要启动这个activity,那么这个activity会被放在一个新的任务栈里
      • singleInstance 启动activity时候先去后台任务栈看是否有这个activity,如果有直接使用,没有则新建一个任务栈存放。 注意!这个任务栈只存在这个activity
      • 注意!如果是singleTop、singleInstance标志的ActivityA使用startActivityForResult()启动ActivityB,那么系统会直接返回Activity.RESULT_CANCELED
    2. 设置Intent的Flag

      • Intent.FLAG_ACTIVITY_NEW_TASK 无论什么情况都新建一个任务栈来启动Activity
      • Intent.FLAG_ACTIVITY_SINGLE_TOP 即singleTop模式
      • Intent.FLAG_ACTIVITY_CLEAR_TOP 即singleTask模式
      • Intent.FLAG_ACTIVITY_NO_HISTORY 配置这个标志位的Activity启动其他Activity时候会被销毁
        • 如A用FLAG_ACTIVITY_NO_HISTORY配置启动了B,B启动C,那么任务栈只有AC

    相关文章

      网友评论

          本文标题:Activity的一些事

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