在Android原生开发过程中,打开一个Activity是基本的操作。Android也为打开一个新的Activity设计了四种启动模式(standard、singeTop、singleTask、singleInstance),那么这四种模式具体的作用是什么,以及各自的使用场景是什么呢?
在开始之前先了解一下栈,如下图:
栈
栈是一个先入后出(FILO-First In Last Out)的有序列表。
其实Android维护了对应的Activity栈,Activity的打开与关闭,即Activity进栈与出栈。
activity standard模式下的栈
Standard模式下,每次打开一个Activity都会new一个activity实例然后压入到栈中,执行对应Activity的生命周期方法onCreate() 、onStart() 以及onResume()。Android模式采用的就是这种启动模式。
如果接下来打开的界面仍然是ActivityB,那么在SingleTop模式下,就会先判断当前栈顶是不是ActivityB:
应用场景:避免快速点击打开多个相同的界面,节省内存
如果接下来打开的界面仍然是ActivityA,那么在SingleTask模式下,就会先判断当前栈中是否有ActivityA:
应用场景: 应用开启后仅仅有一个Activity的实例,最典型的样例就是应用中展示的主页(Home页)。
SingleInstance模式即单一实例模式,整个手机操作系统里面只有一个实例存在。他会运行在自己单独且独立的任务栈里面,并且任务栈里面只有他一个实例存在。
比如现在当前栈中有ActivityA,我们在A中启动ActivityB,ActivityB的启动模式是singleInstance,此时会创建一个新的任务栈,创建ActivityB实例将ActivityB放在新的任务栈中。
应用场景:Launcher、拨打电话等
| 留言与评论(共有 0 条评论) “” |