1.需求
1.1理解activity的四种启动模式
——-1 standard
——-2 singleTop
——-3 singleTask
——-4 singleInstance
2.实现
2.1研究方式
编写四个分别以standard,singleTop,singleTask,SingleInstance模式启动的activity1 activity2 activity3 activity4,并输出日志查看结果。实现的程序页面如下,每个页面都有启动其他activity的按钮,并有当前的栈id 以及activity的id。
2.2standard模式
standard模式:每次启动都创建一个新的activity
在启动程序之后在activity1内点击按钮启动2,再从2内启动1,日志如下,可以看到activity1再一次执行了oncreate函数,也就是重新创建了一个activity1对象。
2.3singleTop模式
singleTop模式:singleTop如果在栈顶就重用此activity实例,否则重新创建一个。
可以由下图看到,每次使用activity2启动自身时的,其使用的都是同一个activity,并且会调用activity2的onpause与onresume方法
2.4singleTask模式
singleTask模式:如果栈中有实例,则重此实例,若不在栈顶需将其他activity出栈。
启动activity3此时栈有了activity3的实例,再从这里启动其他activity之后,再一次启动activity3,可以看到没有重新创建一个activity3, 并且activity1被销毁了而不是暂停,也就是将activity1出栈,并且activity3成为了栈顶的activity
2.5singleInstance模式
singleInstance模式:这个模式会启动一个新的ActivityStack并且里面只有一个activity每次调用时都会使用这个activity。
由日志看到再打开也不会创建新的activity4