关于singleTask TaskAffinity allowTaskReparenting 一.Activity的LaunchMode 1.standard 2.singleTop:FLAG_ACTIVITY_SINGLE_TOP  栈顶复用模式,即如果栈顶有本activity实例,则无需新实例化activity. 3.singleTask:FLAG_ACTIVITY_NEW_TASK + FLAG_ACTIVITY_CLEAR_TOP的效果 4.singleInstance:单独一个栈,且栈…
最近研究微信调起自己客户端的事情,对于SingleTask和TaskAffinity的理解又多了一些理解.   以前对于Android的四种LaunchMode有一些了解,其中比较有意思的就是SingleTask和SingleInstance .(四种LaunchMode的了解可以参见这篇文章,对于Activity栈的讲述很详细).这两种LaunchMode的理解都跟Task有很大关系.           一个Task可以理解成一个Activtiy栈,可以装载一个或者多个Activity,回退…
最近研究微信调起自己客户端的事情,对于SingleTask和TaskAffinity的理解又多了一些理解. 以前对于Android的四种LaunchMode有一些了解,其中比较有意思的就是SingleTask和SingleInstance .(四种LaunchMode的了解可以参见这篇文章,对于Activity栈的讲述很详细).这两种LaunchMode的理解都跟Task有很大关系. 一个Task可以理解成一个Activtiy栈,可以装载一个或者多个Activity,回退和打开的顺序逻辑和基本的…
每个Activity都有taskAffinity属性,这个属性指出了它希望进入的Task.如果一个Activity没有显式的指明该Activity的taskAffinity,那么它的这个属性就等于Application指明的taskAffinity,如果Application也没有指明,那么该taskAffinity的值就等于包名.而Task也有自己的affinity属性,它的值等于它的根Activity的taskAffinity的值. 一开始,创建的Activity都会在创建它的Task中,并…
Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系.我们知道,一般情况下在同一个应用中,启动的Activity都在同一个Task中,它们在该Task中度过自己的生命周期,这些Activity是从一而终的好榜样. 那么为什么我们创建的Activity会进入这个Task中?它们会转到其它的Task中吗?如果转到其它的Task中,它们会到什么样的Task中去? 解决这些问题的关键,在于每个Activity的taskAffinity属性. 每个Act…
Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系.我们知道,一般情况下在同一个应用中,启动的Activity都在同一个Task中,它们在该Task中度过自己的生命周期,这些Activity是从一而终的好榜样. 那么为什么我们创建的Activity会进入这个Task中?它们会转到其它的Task中吗?如果转到其它的Task中,它们会到什么样的Task中去? 解决这些问题的关键,在于每个Activity的taskAffinity属性. 每个Act…
在开发中,与界面跳转联系比较紧密的概念是Task(任务)和Back Stack(回退栈).activity的启动模式会影响Task和Back Stack的状态, 进而影响用户体验.除了启动模式之外,Intent类中定义的一些标志(以FLAG_ACTIVITY_开头)也会影响Task和Back Stack的状态. 在这篇文章中主要对android的堆栈管理进行分析和验证,其中涉及到activity的一个重要属性taskAffinity和Intent中的标志之一FLAG_ACTIVITY_NEW_T…
什么是任务栈(Task) 官方文档是这么解释的 任务是指在执行特定作业时与用户交互的一系列 Activity. 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中. 其实就是以栈的结构(先进后出)将依次打开的activity记录. 为什么要用任务栈 为了记录用户开启了那些activity,记录这些activity开启的先后顺序,google引入任务栈(task stack)概念,帮助维护好的用户体验. 如何查看当前系统的任务栈 手机中 --> 长按home或者多任务键会进到 …
Activity是Android的四大组件之一,他的重要性毋庸置疑,对于这么重要的一个组件,我们首先要知道这些都是由系统进行管理和回调的,要理解Activity的启动模式,我们首先来了解一下Android中的任务栈. 任务栈Task,是一种用来放置Activity实例的容器,他是以栈的形式进行盛放,也就是所谓的先进后出,2个基本操作:压栈和弹出,所以在其中只能根据压栈和弹出操作更改Activity的顺序.我们启动一个Application的时候,系统会为它默认创建一个对于的Task,用来盛放根A…
launchMode,通俗点说,就是定义了Activity应该如何被launch的.那么这几种模式的区别以及应用场景,会有何不同呢?谷歌是基于什么原因设计这几种模式的呢?这几种模式背后的工作原理是什么呢? 1. 任务和返回栈 在讲解launchMode之前,先说说任务(Task)和返回栈(Back Stack,有些译作回退栈.任务栈)这两个概念. A task is a collection of activities that users interact with when performi…