其实关于Android的Activity和task的关系,网上文章很多,我只是针对我自己发现的问题,稍作总结
我的理解是,对于一个app而言,它的Activity是保存在task中的,一个app可以有多个task,一个task可以有多个Activity,
当我们按下home键的时候,当前运行app的task进入到后台,当我们重新进入应用,就会直接返回之前task的位置。
以上为正常逻辑
下面为我自己的推测,还望指正
我的理解是,Activity的顺序为:首先按task排序,然后按task中的Activity排序。由此推断当app由后台到前台时,
其实是一组的task,而不是我们理解的一个task。
Activity与task的关系为:一个task中有多个Activity,当Activity销毁时候,Activity从task中移除,当task中没有Activity的时候,
该task销毁。
Activity会维护app运行时产生的task,当我们进入程序时,系统会检测是否存在运行过的task,如果存在,直接将其提到前提,如果
不存在,则会重新创建。
基于以上的几个观点,我们试着去理解一下从进入app以及从近期任务栏进入程序的执行逻辑。
1 点击图标进入app
task为空-->创建task-->创建mainActivity-->进入后台-->点击应用图标-->task不为空-->直接将task提到前台,展示Activity
2 由近期任务栏进入
有近期任务栏进入程序,会从ActivityManagerService中获得近期运行的task的信息,然后通过Intent将task提到前台。
注意,从ActivityManagerService中获得近期运行的task记录的是应用启动的那个task的信息,如果在该task之上存在
task,则展示上面的task,如果该task之上不存在,则直接创建新的task。
注意理解:启动的那个task的含义
一般启动的那个task指的是存储在最底端、最下面的那个task。
2013.7.18日更新
在网上看见一个关于Activity运行模式的文章,其实我和他的理解基本一样,只是人家表述的更清晰
链接:http://www.cnblogs.com/xiaoQLu/archive/2011/09/29/2195742.html
在此,我只强调下singleInstance 模式
该模式下,会创建一个新的task为Activity,如果该Actvity的实例存在,以后的跳转都不会再创建新的实例,不论该Activity是否处于显示的状态上。
另外一个问题就和这个近期任务栏相关了。
近期任务栏记录的是该app最后一次开辟新的task的信息,就像flag的newTask标记与singleInstance 模式,都会创建新的task,系统记录该task,在近期任务栏启动中启动应用,会从该task中记录的信息启动具体的Activity,而不再是程序的入口Activity
ps:flag的newTask标记标记不是一定都会起作用的,我的理解是,如果task不存在,创建,存在该标记失效!!!
分享到:
相关推荐
Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式: 1.standard 模式启动模式,每次激活...
android activity和taskandroid
android开发中activity不同启动模式的学习,通过不同的activity启动,会在activity中显示task ID 和Android 实例,方便学习activity的启动模式。
主要为大家详细介绍了Android利用Intent启动和关闭Activity的相关操作,感兴趣的小伙伴们可以参考一下
点击通知启动多个Activity.从启动Activity 返回不会退出app,而是返回到App 的MainActivity 或者其他Activity
android 启动 activity生命周期
Android中采用任务栈的形式来管Activity。栈是一种“先进后出”的数据结构。 Android中的任务栈 Task Stack in Android Activity的启动模式 Activity startup mode Activity的启动模式 Activity startup mode ...
如何利用动态代理技术Hook掉系统的AMS服务,来实现拦截Activity的启动流程。
4. 掌握Activity的启动模式,和启动模式所对应的Activity和task的关系 内容: 1、设计如下界面,包括四个按钮,两个文本框。单击对应按钮可以启动对应activity。假 定Activity A为启动Activity。 2、修改 Activity ...
Android应用程序的Activity启动过程简要介绍和学习计划
android activity启动模式:standard、singleTop、singleTask、singleInstance详解
Android启动的四种方式分别为standard,singleTop,singleTask,singleInstence。 standard是最常见的activity启动方式,也是默认的启动的方式。当启动一个activity的时候他将进入返回栈的栈顶。系统不会管栈内是否...
Android 内部 启动Activity 时序图,了解activity在系统的启动流程对Android开发的同事很有帮助
ActivityTask是怎么进行设计的,以及Activity四种加载模式。
# Android中Activity四种启动模式和taskAffinity属性详解 #
Android的Activity一共有4中启动模式分别是:standard、singleTop、singleTask、singleInstance。资源是该例子的项目,直接导入项目即可。
Android的Activity周期 Android的Activity周期 Android的Activity周期 Android的Activity周期 Android的Activity周期 Android的Activity周期 Android的Activity周期 Android的Activity周期 Android的Activity周期
android,启动service,并且service把值传给Activity显示
Android学习笔记-Activity篇 Contents Android学习笔记-Activity篇 1 一、activity创建: 1 二、在manifest.xml中声明activity: 1 三、启动activity 1 3.1 启动不带返回结果的Activity 1 3.2 启动带有返回结果的...