Android Activity详解-启动模式

Android Activity详解-启动模式

启动模式介绍

Android 内部通过任务栈 Task 来管理 Activity 实例,栈结构是一种后进先出的结构,主要有两种操作:压栈和出栈,App 启动时会默认创建一个任务栈 Task 来保存管理 Activity 实例,在启动新的 Activity 时,将新的 Activity 实例进行压栈操作,显示的 Activity 会存放在栈顶,当用户点击后退键时,就会将栈顶的 Activity 进行出栈操作,栈顶后的 Activity 就会显示。

启动模式详解

为了实现一些 Activity 的特殊处理,Android 为我们提供了4种启动模式

standard(标准启动模式)

默认启动模式,每次启动 Activity 都会创建一个 Activity 实例,Activity 实例依附在启动的的 Activity 栈中,ApplicationContext没有任务栈,采用标记位 FLAG_ACTIVITY_NEW_TASK 来创建一个任务栈

使用场景: 大部分 Activity 都会使用此启动模式

singleTop(栈顶复用模式)

如果以 singleTop 模式启动的 Activity 位于任务栈的栈顶,那么再次启动这个 Activity 时,会复用当前的实例,不创建新的实例,同时回调 onNewIntent() 方法将 Intent 对象传递到这个实例

使用场景:适于多消息下的同一页面

singleTask(栈内复用模式)

如果 Activity 以该模式启动,那么在任务栈中只能有一个该 Activity 的实例,如果任务栈不存在,则创建该实例压入栈顶;如果存在该实例,会销毁当前 Activity 任务栈之上的所有 Activity 实例,最终让该 Activity 实例位于栈顶,同时回调 onNewIntent() 方法将 Intent 对象传递到这个实例

使用场景:程序入口点

singleInstance(单实例模式)

如果 Activity 以该模式启动,会单独创建一个任务栈,并且在任务栈中只能有这一个实例,再次启动时,会复用已有的任务栈和实例,同时回调 onNewIntent() 方法将 Intent 对象传递到这个实例

使用场景:适于应用的分离页面

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值