Android Activity 启动模式

当应用运行Activity实例创建后会被放在一个线程的任务栈中,根据Activity的启动模式不同,被创建的实例会有区别,假设有A、B两个Activity,A为启动Activity,设定A的启动模式:

standard(默认标准启动)

打开应用,任务栈task中有一个A的实例a1,此时再从A-startActivity-A,会在task中创建一个新的实例a2,此时再从Aa2-startActivity-B,会创建B实例,按返回键会回到A-a2,再返回会到A-a1,再返回会退出应用。


singleTop

打开应用,任务栈task中有一个A的实例a1,此时若想从A-startActivity-A,不管点击多少次都不会创建新的实例,因为此时A的实例a1在栈顶,若按返回则会退出应用。

打开应用,任务栈task中有一个A的实例a1,从A-startActivity-B,再从B-startActivity-A,由于此时A的实例不在栈顶,会创建一个新的A实例a2。按返回会到B,再返回会到A的a1,再返回则退出。


singleTask

打开应用,任务栈task中有一个A的实例a1,此时若想从A-startActivity-A,不管点击多少次都不会创建新的实例,按返回则退出。从A-startActivity-B,再从B-startActivity-A,会复用A的实例a1,并且将B的实例移除出栈,即销毁掉。按返回会退出应用。在这种模式下被销毁的只有实例a1上方的其他Activity实例。

比如我们把B作为启动Activity且为默认启动模式,A的模式为singleTask。我们打开程序,首先是B-b1,然后从B-startActivity-A,创建一个a1实例,再A-startActivity-B,会创建b2,再从B-startActivity-A,会重新使用a1实例并销毁b2。此时任务栈中最低层是b1,上面是a1。按返回会到B,再返回退出应用。


singleInstance

打开应用,任务栈task1中有一个A的实例a1,该任务栈只会有一个实例,此时若想从A-startActivity-A是不会创建新实例的。A-startActivity-B,会创建新的任务栈task2和B的实例b1,按返回会回到task1-a1,再返回退出应用。若从B-startActivity-A,会复用task1-a1,按返回会到b1,再返回退出应用。

打开应用,任务栈task1中有一个A的实例a1,A-startActivity-B,创建新的任务栈task2和B的实例b1,再B-startActivity-B,在任务栈task2中创建B的实例b2,此时再B-startActivity-A,复用task1-a1,按返回到b2,按返回会到b1,再返回退出应用。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值