1.怎样设置Activity的启动模式
可以在清单文件中自己添加活动的启动模式, android : launchMode="standard", 不写的话系统默认就是标准模式.
2.启动模式
2.1.默认启动模式
标准启动模式就是栈, 打开一个活动就将活动压入栈中, 返回就将活动退出栈中.
不同的Activity可以设置不同的启动模式
2.2.栈顶复用启动模式
当要创建的活动此时已经在栈顶了, 那就不会重新创建新的.
应用场景
适合开启渠道多、多应用开启调用的Activity,通过这种设置可以避免已经创建过的Activity被重复创建,多数通过动态设置使用。
2.3.栈内复用启动模式
如果要创建的活动栈内已经存在, 那么会将该活动之上的活动全部弹出, 这时要创建的活动就处于栈顶了, 显示在界面中.
应用场景
程序主界面:我们肯定不希望主界面被创建多次,而且在主界面退出的时候退出整个App是最好的效果。
耗费系统资源的Activity:对于那些及其耗费系统资源的Activity,我们可以考虑将其设为singleTask.模式,减少资源耗费。
2.4.全局唯一启动模式
全局唯一模式意味着活动单独的在一个栈中, 当跳转到别的活动Activity2(也是全局唯一模式)时, 会单独的给Activity2创建一个栈, 主活动就处于后台, 再次调用主活动时不会创建新的, 而是唤醒在后台的主活动. 全局唯一模式的活动只能同时存在一个.
3.启动标志
3.1如果不想重复创建栈内已有的活动, 我们还可以给跳转的intent设置启动标志, intent.setFlags(Intent.FLAG_aCTIVITY_CLEAR_TOP)
3.2若果是软件的登录页面, 当我们登录成功后, 返回也不会回到登录界面而是直接退出.
想要达到这样的效果我们就需要设置启动标志FLAG_ACTIVITY_CLEAR_TASK, 登陆之后该标志会清理活动栈中所有的实例, 并且创建新任务的活动栈.
intent.setFlags (Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);