activity的启动模式分析

activity启动模式在开发中的作用

activity的启动方式有四种:standard 、singleTop、singleTask、singleInstance。

1.standard标准模式

在这个模式下,可以有多个相同的实例。每开启一个activity都会创建一个实例。

例如:有a1、a2、a3个activity。如果你打开a1→a2→a3→a1→a2→a3。实际的栈中a1→a2→a3→a1→a2→a3其中a1在最下面(先进后出)

2.singleTop可以有多个相同实例,但是不允许叠加。

在这个模式下,如果已经开启了a1,如果紧接着再次开启a1时,会调用onNewIntent()方法。

activity第一次启动的时候执行onCreate()→onStart()→onResume等。在singleTop模式下,再次启动该activity就会执行onNewIntent()→onRestart()→onStart()onResume.

例如:有a1、a2、a3个activity,如果你的打开顺序a1→a2→a2,实际开启顺序a1→a2。

开启a1→a2→a3→a1→a2→a3,实际的开启顺序a1→a2→a3→a1→a2→a3。(可以发现不同的activity可以交替开启,开启同一个activity则会被覆盖。)

3.singleTask模式

在同一个任务栈中不会存在相同的实例,如果该activity不存在,就会创建一个实例。

例如:有a1、a2、a3三个activity。如果你的开启顺序是a1→a2→a3→a1,实际栈中a1。前面的activity被销毁了

如果开启顺序为a1→a2→a2。实际栈中a1→a2。

4.singleInstance模式

只有一个实例,这个实例独立运行在一个任务栈task中。这个栈只有一个activity实例。

例如:有a1、a2、a3三个activity,其中a2是singleInstance模式。

如果你的开启顺序为a1→a2→a3,a2在任务栈c。即a1开启了任务栈c,存放a2这个实例,a2有开启了任务栈b,将a3压入到任务栈b。此时任务栈x存放a1、a3.任务栈c存放a2.

以上只涉及到本应用程序,不包括其他应用程序开启本应用程序的任务栈。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值