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 ...
随机推荐
- WebSocket协议详解与c++&c#实现
摘要: 随着手机游戏.H5游戏以及微信小游戏的普及,越来越多的客户端-服务器端的通讯采用websocket协议.Websocket协议是全双工的.基于数据帧的.建立在tcp之上的长连接协议.Webso ...
- Go:学习笔记兼吐槽(3)
Go:学习笔记兼吐槽(1) Go:学习笔记兼吐槽(2) Go:学习笔记兼吐槽(3) 数组 Golang 中,数组是值类型. 数组的声明 var arr [10]int 数组的初始化 var arr1 ...
- .netcore2.1使用swagger显示接口说明文档
项目之前开发完接口后,我们还需要写接口说明文档,现在有了swagger方便了很多,可以网页版直接测试,当然了也减少了我们的工作量. 使用swagger生成接口说明文档,大致需要2个步骤 1.从“管理 ...
- Spring Boot入门(三):使用Scheduled注解实现定时任务
在程序开发的过程中,经常会使用定时任务来实现一些功能,比如: 系统依赖于外部系统的非核心数据,可以定时同步 系统内部一些非核心数据的统计计算,可以定时计算 系统内部的一些接口,需要间隔几分钟或者几秒执 ...
- 全球第一免费开源ERP Odoo WMS库存管理高级路线设置详解
概览 路线就是推规则和拉规则的合并整理.Odoo可以配置高级推/拉路线的配置, 例如 : 管理产品的制造链条 为每个产品管理默认位置 根据业务需求在仓库中定义路线, 例如质检, 售后和供应商退货 租用 ...
- android 自定义权限管理
在Android6.0后有些权限就需要进行询问,虽然可以将targetSdkVersion设置成小于等于23,但是这样可能有些东西无法使用,所以要进行权限的管理. 实现逻辑:打开页面就询问权限,如果没 ...
- gitbook 入门教程之使用 gitbook-cli 开发电子书
gitbook 生成电子书主要有三种方式: gitbook-cli 命令行操作,简洁高效,适合从事软件开发的相关人员. gitbook-editor 编辑器操作,可视化编辑,适合无编程经验的文学创作者 ...
- Spring Aop源码分析
最近看了SpringAop的源码实现 大概记录一下aop的源码流程 创建一个最简单的一个测试类 package com.zcg.learn.Test; import org.aopalliance. ...
- Abnormal build process termination--解决IDEA启动web项目报错
iDEA启动后报Error:Abnormal build process terminatio 报错的原因如下: Error:Abnormal build process termination: & ...
- iOS客户端图片智能裁剪
 概述 所谓智能裁剪其实就是按照指定尺寸裁剪或显示出包含图片核心特征的区域,目前很多智能裁剪都是在服务器端做的,在客户端需要访问时直接裁剪放到Redis或者提前裁剪好以备访问.但是找了一圈直接在iO ...