Android Studio教程04-Task和Back stack
目录
1.Tasks and Back Stack
1.1. 当点击Back按钮返回到上一个Activity时发生了什么?
后进-先出原则
1.2. 点击HOME按钮
当点击HOME按钮的时候,原activity停止,但是整个activity依然完整,用户返回这个task的时候,依然保持用户离开时的样子
1.3.多次点击进入Activity-Back按钮
- Activtiy会被多次实例化--我们可以避免它
2.管理任务
- 一般情况下任务都遵循后进-先出的原则,无特殊情况不需要去更改它
- 但是有时候可能遇到下面的情况:
- 希望在现Activity中启动新的Task(从当前app跳到另外一个app)
- 不希望activity被多次实例化
- 明确back stack的activity
- 怎么做?
- 在
AndroidManifest.xml
中的<activity>
添加属性taskAffinity
launchMode
allowTaskReparenting
clearTaskOnLaunch
alwaysRetainTaskState
finishOnTaskLaunch
- 在
startActivity()
之前的Intent
中添加参数FLAG_ACTIVITY_NEW_TASK
FLAG_ACTIVITY_CLEAR_TOP
FLAG_ACTIVITY_SINGLE_TOP
2.1. 定义启动模式
定义新的Activity与当前的Task如何关联
(1).method1: 在mainifest中声明
- 在
属性 | 模式 | 含义 |
`launchMode` | `standard(default)` | activity可以创建多次,每个task可以含有多个实例(A-B-C: A-B-C-C) |
`singleTop` | 当activity在top时,不会创建新实例(A-B-C: A-B-C)(A-B-C: A-B-C-B) | |
`singleTask` | 创建新的Task和实例化activity,但是如果activity之前已经存在,不会实例化 | |
`singleInstance` | 上同 |
### (2).method2: 在Intent flag中声明
flas | 含义 | 与method1匹配 |
---|---|---|
FLAG_ACTIVITY_NEW_TASK | 在新的Task中开启Activit,如果这个task已经存在,直接将他调用到前端 | singleTask |
FLAG_ACTIVITY_SINGLE_TOP | 如果在当前activity中再次开启当前activity,直接调用onNewIntent()方法,不会创建新实例 | singleTop |
FLAG_ACTIVITY_CLEAR_TOP | 如果将要开启的actiivty存在于当前task中,直接销毁task中该activity之前的所有activity 然后调用onNewIntent()方法,不会创建新实例 |
---- |
Android Studio教程04-Task和Back stack的更多相关文章
- Android studio教程
Android studio教程: http://jingyan.baidu.com/season/44062
- Android Studio教程从入门到精通
最新2.0系列文章参考: Android Studio2.0 教程从入门到精通Windows版 - 安装篇Android Studio2.0 教程从入门到精通Windows版 - 入门篇Android ...
- Android Studio教程01-的工程和目录结构解析
目录 1.主目录 1.1. app目录 1.2.项目资源文件夹res 2. 理解build.gradle文件 2.1. 外部build.gradle 2.2. app文件下的build.gradle ...
- Android Studio教程-创建第一个项目Hello World
前段时间打开Android studio 在build过程中总会出现以下错误 Error:Execution failed for task ':app:preDebugAndroidTestBuil ...
- Ubuntu1404配置jdk-12.0.2并安装Android Studio教程
最近在学习Android Studio 移动应用程序开发,但Android Studio好像对win10不太友好,所以小帅想在Ubuntu上安装Android Studio.为此小帅还去网上找了相关教 ...
- Android Studio 教程
Android Studio 超详细安装教程 http://dkylin.com/archives/2019/android-studio-installation.html Android Stud ...
- Android Studio教程--给Android Studio安装Genymotion插件
打开Android Studio,依次[File]-[Settings] 在打开的settings界面里找到plugins设置项,点击右侧的“Browser..”按钮 在搜索栏里输入genymotio ...
- Android Studio教程--Android Studio 2.1安装与配置
1.下载Android Studio 去官网https://developer.android.com/studio/index.html下载最新版的Android Studio2.1(自备梯子) 或 ...
- Mac下载安装Android Studio教程
今天把公司闲置的一台Mac-mini重装了下系统感觉用着速度还不错,平时上班用的机器USB有些问题,所以打算用这台Mac.以往开发用Intellij Idea就够用,但是这次项目引用的jar包太多,遭 ...
- Android studio教程:[6]创建多个Activity
通常来说,一个android应用程序不止一个Activity(活动),更不止一个界面.于是需要创建多个Activity来满足应用程序的要求,这里我将告诉大家如何添加新的Activity,并实现Acti ...
随机推荐
- Fast R-CNN中的边框回归
前面对R-CNN系的目标检测方法进行了个总结,其中对目标的定位使用了边框回归,当时对这部分内容不是很理解,这里单独学习下. R-CNN中最后的边框回归层,以候选区域(Region proposal)为 ...
- pfSense配置基于时间的防火墙规则
基于时间的规则允许防火墙规则在指定的日期和/或时间范围内激活.基于时间的规则与任何其他规则的功能相同,只是它们在预定时间之外的规则集中实际上不存在. 基于时间的规则逻辑处理基于时间的规则时,调度计划确 ...
- JDK1.8-Java虚拟机运行时数据区域和HotSpot虚拟机的内存模型
目录 介绍 官方文档规定的运行时数据区域 程序计数器 Java虚拟机栈 本地方法栈 虚拟机栈和本地方法栈溢出 Java堆 演示堆内存溢出 方法区 运行时常量池 演示方法区溢出 HotSpot虚拟机的内 ...
- SAP HUM事务代码 HUMAT 之初探
SAP HUM事务代码 HUMAT 之初探 SAP菜单中,该事务代码在这里: 1)如下的inbound delivery号码, Document flow, 已经完成了PGR, 2)执行HUMAT,进 ...
- Odoo 12 开发手册指南(八)—— 业务逻辑 – 业务流程的支持
在前面的文章中,我们学习了模型层.如何创建应用数据结构以及如何使用 ORM API 来存储查看数据.本文中我们将利用前面所学的模型和记录集知识实现应用中常用的业务逻辑模式. 本文的主要内容有: 以文件 ...
- AI2(App Inventor 2)离线版服务器网络版
个人修改包括: 1.后台增加用户批量添加功能 https://gte.fsyz.net/node/1877 2.上传文件限制改为100M ,编译文件限制改为10M https ...
- 解决@ResponseBody注解返回的json中文乱码问题
1. 简介 主要解决@ResponseBody注解返回的json中文乱码问题. 2.解决方案 2.1mvc加上注解(推荐此方法) 在mvc配置文件中假如下面配置(写在 <mvc:annotati ...
- Kubernetes 笔记 11 Pod 扩容与缩容 双十一前后的忙碌
本文首发于我的公众号 Linux云计算网络(id: cloud_dev),专注于干货分享,号内有 10T 书籍和视频资源,后台回复「1024」即可领取,欢迎大家关注,二维码文末可以扫. Hi,大家好, ...
- vue的基本指令
1.创建vue对象 <script src="vue.js"></script> var vm = new Vue({ el:"#ap ...
- 【深度学习】--DCGAN从入门到实例应用
一.前述 DCGAN就是Deep Concolutions应用到GAN上,但是和传统的卷积应用还有一些区别,最大的区别就是没有池化层.本文将详细分析卷积在GAN上的应用. 二.具体 1.DCGAN和传 ...