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的启动模式,其实是对栈进行管理/操作。
时间: 2024-11-20 01:28:46