Activity的四种启动模式

本篇介绍Android的Activity的四种启动模式,分别为:standard , singleTop , singleTask , singleInstance.
任务栈:android用来存放activity组件的栈(后进先出),一个APP可以有多个任务栈
standard: 标准模式,也是系统默认的模式,每次启动一个Activity都会重新建一个新的实例,在这个模式下,谁启动activity(标准模式),那么这个activity就会添加到启动它的Activity所在的任务栈中。
举个栗子:
你创建一个项目(主界面带一个Button),在MainActivity中

Intent intent = new         Intent(Mainactivity.this,Mainactivity.class);
startActivity(intent);

每次点击button触发该方法 ,就会导致任务栈中拥有很多Mainactivity,需要按四次back才能退回主屏幕
这里写图片描述

singleTop:栈顶复用模式,就是如果A启动B,如果在A所在的任务栈栈顶存在B,则不会被重新创建 如果不存在就会创建,例如任务栈存在ABCD(从下向上),现在要启动Activity D(singleTop模式),则D不会被创建,如果是标准模式则栈变成ABCDD
这里写图片描述

singleTask :栈内复用模式 , 只要启动的Activity在一个栈中存在,那么启动时就不会创建实例,它在启动的时候寻找存在该Activity实例的任务栈,找不到这种栈就重新创建,找到了就把该Activity(设为 A)实例调到栈顶,启用它(通过调用它的onNewIntent方法),A调到栈顶,说明它上面的Activity就需要全部出栈,现在在A,想要启动B,则C会出栈
展示B,再次启动C时就会重新创建C
这里写图片描述

singleInstance : 单实例模式,具有singleTask所有功能,但是它把就有singleInstance模式的Activity都单独放在一个任务栈里面

模式具体运用场合:
singleTop: 适用于消息推送,通知栏弹出Notification,点击Notification跳转到指定Activity,之前就停留在指定的界面
singleTask:提供给第三方打开的Activity ,该Activity适用singleTak结合TaskAffinity使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值