1、任务栈的概念
①任务栈是一个存储Activity的集合。
②当前程序的所有activity都有序的存放于该程序的任务栈中,只有栈顶的activity才是可视的、可以和用户交互。
③任务栈可以移动到后台,并保留activity的状态及信息
④当任务栈中的activity全部被清除时,此时任务栈被销毁,程序退出
2、任务栈的缺点
每次开启一个页面就会在任务栈中生成一个新的activity,而只有当全部activity都被清除时任务栈才被销毁,程序才能退出,不仅用户体验差而且可能导致内存占用过多甚至出现OOM。
3、四种启动模式
为了优化任务栈的缺点,于是出现了activity的启动模式LanchMode。
·standard
默认的启动模式,开启一个页面就在任务栈中创建一个activity示例,并存放于栈顶。
·singleTop
如果启动一个页面,此时恰好有该页面的activity实例在栈顶,则重复利用不再创建新的activity实例。适用于通知启动的页面,如新闻客户端。
·singleTask
如果启动一个页面,此时栈内恰好有该页面的activity实例,则清除该activity实例上面的所有activity实例,使该activity处于栈顶,显示出来。适用于程序入口点,如浏览器
·singleInstace
启动一个singleInstance模式的activity时,创建一个全新的任务栈用于存放该activity实例,并保证不再有其他的activity实例进入。适用于需要与主程序分离开的页面,如闹铃提醒,将提醒页面与其他页面分离。
3、Scheme跳转协议
1、服务器下发url路径,客户端通过url跳转到相应页面。
2、一个app页面通过scheme协议跳转到另一个页面
3、H5页面跳转到原生APP
网友评论