Activity的启动模式在清单文件AndroidManifest.xml中的Activity属性中进行设置:
如:<activity
android:name=".MainActivity"
android:launchMode="standard"/>
Activity的启动模式一共四种:
1、standard 模式
标准模式,如果不在清单文件中声明,系统会默认使用这种模式启动,大多情况下也都是使用这种模式启动。
特点是:每一次都会创建一个新的Activity,这个新的Activity总是放在栈顶; 由于都创建新的Activity,
比较耗资源。
2、singleTop 模式
每当需要启动Activity时,系统首先会检查栈顶的Activity是否存在一样的Activity实例,如果存在,
则直接使用栈顶已存在的Activity,否则新建一个Activity。
3、singleTask 模式
每当需要启动一个Activity时,系统会检查存放的栈中是否存在一样的Activity实例,如果存在,调用该实
例的newInstance()方法重用该Activity,并把他上面的Activity销毁掉,使其处于激活状态---栈顶,否则
就重新创建一个新的Activity实例。
4、singleInstance 模式
每当需要启动一个Activity时,系统会检查栈中是否存在一样的Activity实例,如果存在,则会调用onNewIntent()
给它开一个单间,即重新开一个栈存放.这种模式只会创建一次,即只会调用一次onCreate()方法,除非Activity被销毁。
比较耗资源,并且使用该模式时会存在bug---调用startActivityForResult()时,会报错,我也不知道什么解决,最好
别用。
附:Activity与栈
1.栈的基本工作原则是先进后出,或者后进先出。
2.Activity是由栈来管理的,每创建一个Activity,都会往栈中叠加,就像往一个箱子(假设箱子大小与书本恰好相同)里存放书本,
先创建的放在栈底,最上面的是栈顶,只有栈顶的Activity是激活状态的。
3.Activity的启动模式,其实是对栈进行管理/操作。