浅谈Activity的四种启动模式
简单描述一下activity
activity是Android的四大组件之一,在Android系统中以界面的形式进行展现的它是一个可见页面activity实现了Window.Callback,KeyEvent.Callback等接口用于用户进行交互。
首先来说说常用的:标准模式——Standard
此模式不管有没有已存在的实例,都生成新的实例。只要创建对象的实例,就会被添加到栈中,可重复叠加(叠加:就是只要创建Activity就会被添加到栈中,如果第二次启动这个activity,也会创建一个实例并添加到栈中)
栈顶模式——SingleTop
不允许相同的activity叠加如果在任务的栈顶正好存在activity的实例,就会重用该实例,否则就会创建一个新的例如果栈中已经存在activity的实例,但不是在栈顶,都会创建新的实例。
应用场景:浏览器书签
单任务栈模式——SingleTask
有弹栈的效果,如果栈中已经有该activity的实例,就会重用该实例,重用时,会让该实例返回到栈顶因此它上面的实例将会被移除栈,如果栈中不存在该实例,将会重新创建新的实例放入栈中。
应用场景:浏览器主界面
销毁模式——SingleInstance
只允许有一个实例,并且这个实例独立运行在栈中不允许存在除该实例之外的其他实例。
应用场景:来电显示
再给大家分享几个小编的问题
Activity singletop和 singletask区别是?一般书签的使用模式是singletask?
singleTop模式跟standard模式比较类似。唯一的区别就是,当跳转的对象是位于栈顶的 activity(应该可以理解为用户眼前所看到的:activity实例)时,程序将不会生成一个新的activity实例,而是直接跳到现存于顶的那个 activity实例。拿上面的例子来说,当activity1为singleTop模式时,执行跳转后栈里面依旧只有一个实例,如果现在按返回键程序将直接退出。
singleTask模式和singlelnstance模式都是只创建一个实例的。在这种模式下,无论跳转的对象是不是位于栈顶的 activity,程序都不会生成一个新的实例(当然前提是栈里面已经有这个实例)。这种模式相当有用,在以后的多 activity开发中,常会因为跳转的关系导致同个页面生成多个实例,这个在用户体验上始终有点不好,而如果你将对应 activity 声明为singleTask模式,这种问题将不复存在。在主页的 Activity很常用。

欢迎各位大佬批评