安卓中activity的启动方式分为4种:
1.activity启动方式的设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
2.四种启动方式:
standard:系统默认的启动方式。
标准启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。每个窗体的getTaskId()保持不变,但是this.hashCode()发生改变。
singleTop
如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,而不会创建新的Activity 对象,不过它会调用onNewIntent()方法。 如果栈顶部不存在就会创建新的实例 并放入栈顶(即使栈中已经存在该 Activity实例,只要不在栈顶,都会创建 实例)。会回调onNewIntent()方法。
singleTask
如果在栈中已经有该Activity的实例, 就重用该实例(会调用实例的 onNewIntent())。重用时, 会让该实例回到栈顶,因此 在它上面的实例将会被移 将会创建新的实例放入栈中。 和singleTop在名字上即可看出 区别,即singleTop每次只检测当 前栈顶的Activity是否是我们需要请求 创建的,而singleTask则会检测栈中全部 的Activity对象,从上向下,如果检测到是我 们所请求的,则会消灭此Activity对象上面的对象,直 接把检测到的我们需要的Activity置为栈顶。
singleInstance
与singleTask模式的区别是,在singleInstance模式 中,存放activity实例的(窗口对象)的回退栈不能有其他 任何窗口对象。因此如果该窗口不存在,则 要新建任务来存放该singleInstance模式窗口。也 就是说getTaskId()会发现任务id发生了变化。 此启动模式和我们使用的浏览器工作原理类似,在 多个程序中访问浏览器时,如果当前浏览器没有打开,则 打开浏览器,否则会在当前打开的浏览器中访问。此 模式会节省大量的系统资源,因为 他能保证要请求的Activity对象在当前的栈中只存在一个。总之, 在开发Android项目时,巧妙 设置Activity的启动模式会节省系统开销和提高程序运行效率