美文网首页
activity生命周期和启动模式

activity生命周期和启动模式

作者: 虫二无边 | 来源:发表于2015-12-14 17:34 被阅读32次

    一、生命周期

    正常情况activity启动流程:

    启动activity A

    activity A onCreate -> activity A onStart -> activity A onResume -> 运行

    再启动activity B

    activity A onPause -> activity B onCreate-> activity B onStart-> activity B onResume

    然后再退回到activity A

     activity B onPause -> activity A onRestart -> activity A onStart -> activity A onResume

    按back键退出

    onPause->onStop->onDestroy

    注意

    activity A onPause 之后才会 activity B onResume. 所以不要在onPause里面做太过耗时的操作,否则会导致新界面打开比较慢

    activity优先级

    前台activity:正在与用户交互的activity,优先级最高。

    可见但是非前台activity:优先级次之。

    后台activity:已经执行过stop的activity,优先级最低。

    当系统内存不足时,系统就会按照activity优先级去杀死目标activity所在的进程,并在后续通过onSaveInstanceState和onRestoreInstanceSate来保存和恢复数据。

    二、启动模式(LaunchModel)

    standard:标准模式,这个模式下每次启动activity都会创建一个新实例,谁启动了这个activity,那么这个activity就运行在启动他的那个activity的所在栈中。

    singleTop:栈顶复用模式,这个模式如果新activity已经在栈顶了,那么activity就不会重新创建,同事onNewIntent会被调用,但是onCreate和onStart不会被重新调用。

    singleTask:栈内复用模式,这是一种单实例模式,只要activity在一个栈中存在,那么多次启动activity都不会重新创建实例。如果栈里已经存在该activity,那么该activity会调到栈顶,该activity之前的栈中其他activity都会被弹出。

    singleInstance:单实例模式,加强版singleTask,该模式会将activity加入单独一个activity栈中。

    隐式调用和显示调用:

    显示调用需要明确指定包名和类名,隐式调用通过intentFilter来匹配相应的activity。

    隐式调用:

    action规则:与IntentFilter的字符串值一模一样

    categore规则:只要其中有一个一样就可以匹配

    data规则:如果IntentFilter定义了data,那么intent必须要定义可匹配的data

    【Android 开发者艺术探索读书笔记】

    相关文章

      网友评论

          本文标题:activity生命周期和启动模式

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