当前位置: 首页 > news >正文

理解Android 中的启动模式

Activity启动模式

standard

众所周知这是 Activity 的默认模式,如果不去设置launchMode属性,Activity默认启动模式是介个。 1. Activity1多次启动后,当前Activity栈中会出现多个Activity实例。 2. 始终为Intent创建新实例。

singleTop

  1. Activity在当前Activity栈顶的情况,不会重新创建Activity实例,第二次打开会调用onNewIntent(Intent intent) 将新的Intent对象传入

  2. 等效于

         Intent intent = new Intent(getApplicationContext(), xxxActivity.class);
         intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
         startActivity(intent);
    复制代码
  3. 如果不是在栈顶,则会和 standard 模式一样,创建新的实例。

singleTask

当前应用的 Activity 的栈中只会存在一个Activity实例

  1. 当该模式已启动的 Activity 被再次启动时,会调用onNewIntent(Intent intent)然后将上面所有 Activity 全部清理(包括自己),全部调至onDestroy()生命周期
  2. 没有 Intent#FLAG 与这种模式匹配
  3. 可以使用如下
    Intent intent = new Intent(getApplicationContext(), xxxActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    复制代码
  4. 和上部分 3 的区别,Intent.FLAG_ACTIVITY_CLEAR_TOP(不会杀死目标Activity)
    Intent intent = new Intent(getApplicationContext(), xxxActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(intent);
    复制代码

singleInstence

  1. 该模式的 Activity 会启动一个新的任务栈来管理 Activity 实例,无论从那个任务栈中启动该 Activity,都会是该 Activity 所在的任务栈转移到前台,

相关文章:

  • 深入理解jvm jdk1,7(5)
  • 学会python可以上天!20行代码获取斗鱼平台房间数据,就是这么牛逼!
  • Golang 多goroutine异步通知error的一种方法
  • 前端base64加密
  • 关于kettle,表输入postgres中有jsonb字段的处理
  • Mybatis架构设计及源码分析-mapper.xml文件解析
  • AGC005 补题小结
  • Video.js的简单使用介绍
  • Bootstrap Table的 文本内容 垂直居中
  • 你的知识死角不能否定你的技术能力
  • 2019vivo开发者大会在京召开 泰迪熊移动赋能Jovi
  • 源码分析-AutoCloseable
  • VUE防抖与节流的最佳解决方案——函数式组件
  • redux和mobx比较(二)
  • 2019-05-21 SQL学习
  • [Vue CLI 3] 配置解析之 css.extract
  • C# 免费离线人脸识别 2.0 Demo
  • gops —— Go 程序诊断分析工具
  • JAVA 学习IO流
  • js操作时间(持续更新)
  • js中的正则表达式入门
  • leetcode讲解--894. All Possible Full Binary Trees
  • Map集合、散列表、红黑树介绍
  • Material Design
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Node + FFmpeg 实现Canvas动画导出视频
  • React-redux的原理以及使用
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • Selenium实战教程系列(二)---元素定位
  • spring学习第二天
  • vue的全局变量和全局拦截请求器
  • vue总结
  • Vultr 教程目录
  • 包装类对象
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 基于webpack 的 vue 多页架构
  • 区块链分支循环
  • 如何正确配置 Ubuntu 14.04 服务器?
  • 使用Gradle第一次构建Java程序
  • 数据仓库的几种建模方法
  • 思否第一天
  • 算法---两个栈实现一个队列
  • 微服务核心架构梳理
  • 我建了一个叫Hello World的项目
  • 自动记录MySQL慢查询快照脚本
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • %check_box% in rails :coditions={:has_many , :through}
  • (C语言)共用体union的用法举例
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos