Activity启动相关事宜

来源:互联网 发布:贴纸特效软件 编辑:程序博客网 时间:2024/05/01 18:29

Activity启动相关事宜

1)任务栈的概念

   问:一个手机里面有多少个任务栈?

   答:一般情况下,有多少个应用正在运行,就对应开启多少个任务栈;  

          一般情况下,每开启一个应用程序就会创建一个与之对应的任务栈;

          二般情况下,如launchMode为 singleInstance,就创建自己单独的任务栈;

2)任务栈的作用:

  它是存放Activity的引用的,Activity不同的启动模式,对应不同的任务栈的存放;可通过getTaskId()来获取任务栈的ID,如果前面的任务栈已经清空,新开的任务栈ID+1,是自动增长的;

3)启动模式:

  在AndroidManifest.xml中的<activity>标签中可以配置android:launchMode属性,用来控制Actvity的启动模式;

  在Android系统中我们创建的Acitivity是以栈的形式呈现的:

     ①、standard:默认的,每次调用startActivity()启动时都会创建一个新的Activity放在栈顶;

     ②、singleTop:启动Activity时,指定Activity不在任务栈栈顶就创建,如在栈顶,则不会创建,会调用onNewInstance(),复用已经存在的实例

     ③、singleTask:在任务栈里面只允许一个实例,如果启动的Activity不存在就创建,如果存在直接跳转到指定的Activity所在位置,如:栈内有ABCD,D想创建A, 即A上的    BCD相应的Activity将移除;

    ④、singleInstance:(单例)开启一个新的任务栈来存放这个Activity的实例在整个手机操作系统里面只有一个该任务栈的实例存在,此模式开启的Activity是运行在自己单独的任务栈中的

 

4)应用程序、进程、任务栈的区别

  ①、应用程序:四大组件的集合在清单文件中都放在application节点下,对于终端用户而言,会将其理解为activity

  ②、进程:操作系统分配的独立的内存空间,一般情况下,一个应用程序会对应一个进程,特殊情况下,会有多个进程,一个应用程序会对应一个或多个进程。

  ③、任务栈:taskstack(back stack)后退栈记录用户的操作步骤,维护用户的操作体验,专门针对于activity而言的,只用于activity ,一般使用standard,其他情况用别的,

5)启动模式的演示

  1、创建两个activity,布局中设置两个按钮,分别开启两个activity

    第一、standard启动模式的:开启几个就会在任务栈中存在几个任务01和02都是存在于一个任务栈中的

    第二、在清单文件中将02的启动模式改为singletop,此时02处于栈顶,就只会创建一个02的任务,再开启02,也不会创建新的

    第三、将02的启动模式改为singletask,如果02上面有其他任务栈,就会将其他的清除掉,利用这个已经创建的02,当开启02的时候,即先将01清除,然后利用下面的02

    第四、将02的启动模式改为singleinstance,可以通过打印任务栈的id(调用getTaskId()方法)得知,两个activity不在同一个任务栈中

 若先开启三个01,在开启02,此时按返回键,会先一层一层清空01,最后再清空02


1 0