Android Activity启动模式

2024-02-29 1885阅读

温馨提示:这篇文章已超过388天没有更新,请注意相关的内容是否还可用!

文章目录

  • Android Activity启动模式
    • 概述
    • 四种启动模式
    • Intent标记
    • 二者区别

      Android Activity启动模式

      概述

      Activity 的管理方式是任务栈。栈是先进后出的结构。

      四种启动模式

      启动模式说明适用场景
      standard
      标准模式
      默认模式,每次启动Activity都会创建一个新的Activity实例,并放在栈顶。相对独立的界面
      singleTop
      栈顶复用模式
      如果启动的Activity在栈顶,则会复用该Activity实例,并回调onNewIntent()方法。用于接收通的界面
      singleTask
      栈内复用模式
      如果启动的Activity在栈内,则会复用该Activity实例,并回调onNewIntent()方法,并清除它上方的实例。全局的界面,如主界面
      singIeInstance
      单例模式
      创建一个新任务栈,将新建一个Activity实例并放入新栈中,再次启动会回调onNewIntent()方法。单独隔离的界面,如地图界面

      标准模式:

      Android Activity启动模式

      栈顶复用模式:

      Android Activity启动模式

      栈内复用模式:

      Android Activity启动模式

      单例模式:

      Android Activity启动模式

      在AndroidManifest中设置:

       
      

      Intent标记

      标记说明
      FLAG_ACTIVITY_NEW_TASK在新任务栈中启动Activity,非Activity中启动Activity需要添加该属性
      FLAG_ACTIVITY_SINGLE_TOP栈顶复用模式(singleTop)
      FLAG_ACTIVITY_CLEAR_TOP启动模式为standard时,栈中存在该Activity实例,则重新创建一个新实例,并清除原实例上方的所有实例;启动模式为singleTop时,不会重建Activity,会调用onNewIntent()方法,并清除上方的所有实例。
      FLAG_ACTIVITY_CLEAR_TASK必须配合FLAG_ACTIVITY_NEW_TASK使用,如果任务栈存在,则清空任务栈重新创建Activity实例,如果任务栈不存在,则新建任务栈并创建Activity实例。

      使用:

      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
      

      二者区别

      • 优先级不同:Intent标记的优先级高于Manifest设置。
      • 限定范围不同:Manifest不能设置FLAG_ACTIVITY_CLEAR_TOP,Intent无法设置singleInstance。
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]