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>添加属性taskAffinitylaunchModeallowTaskReparentingclearTaskOnLaunchalwaysRetainTaskStatefinishOnTaskLaunch
- 在
startActivity()之前的Intent中添加参数FLAG_ACTIVITY_NEW_TASKFLAG_ACTIVITY_CLEAR_TOPFLAG_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 ...
随机推荐
- .Net Core中利用TPL(任务并行库)构建Pipeline处理Dataflow
在学习的过程中,看一些一线的技术文档很吃力,而且考虑到国内那些技术牛人英语都不差的,要向他们看齐,所以每天下班都在疯狂地背单词,博客有些日子没有更新了,见谅见谅 什么是TPL? Task Parall ...
- 《k8s-1.13版本源码分析》-调度优选
源码分析系列文章已经开源到github,地址如下: github:https://github.com/farmer-hutao/k8s-source-code-analysis gitbook:ht ...
- 结合JDK源码看设计模式——适配器模式
定义: 将一个类的接口转换成客户期望的另外一个接口(重点理解适配的这两个字),使得接口不兼容的类可以一起工作适用场景: 已经存在的类,它的方法和需求不匹配的时候 在软件维护阶段考虑的设计模式 详解 首 ...
- 驰骋工作流引擎 -Webservice接口说明文档
关键词:工作流引擎接口说明 驰骋工作流接口参数详解 接口 LocalWSI /** * 待办 * @param userNo 用户编号 * @param sysNo 系统编号,为空时返回平台所有 ...
- Android ADB命令详解
adb的全称为Android Debug Bridge.是android司机经常用到的工具 . 你能在本篇文章中学到什么? adb基本指令 Shell AM&PM adb模拟用户事件 logc ...
- 一次apk打开时报内存溢出错误,故写下内存溢出的各种原因和解决方法
原转载:https://blog.csdn.net/cp_panda_5/article/details/79613870 正文内容: 对于JVM的内存写过的文章已经有点多了,而且有点烂了,不过说那么 ...
- 「工具」Aquarelo - 来自意大利的色阶管理工具
Aquarelo是一款小而美的色阶管理工具,由意大利团队开发,包含三个核心功能,可用于色彩管理.色彩搭配等场景. ## 相关参数 * 操作系统:macOS* 工具官网:[Aquarelo for Ma ...
- nginx通过域名访问项目(不接项目名称),cookie丢失问题详解
最近搞了个域名,想用它直接去访问Tomcat上部署的项目,开始一直必须加上项目名称,经过短暂配置,成功了. 访问一次,到达登陆页面,结果死活登录不进去,一直在登陆界面,原来是由于cookie丢失,现配 ...
- Cocos Creator—如何给资源打MD5版本号
Cocos Creator 是Cocos最新一代的游戏开发者工具,基于 Cocos2d-x,组件化,脚本化,数据驱动,跨平台发布.Cocos Creator的开发思路已经逐步跟Unity 3D靠拢,写 ...
- 3. [leetcode] Longest Substring Without Repeating Characters
Given a string, find the length of the longest substring without repeating characters. Examples Give ...