页面启动模式 1050+

用于定义页面的启动行为

静态声明

在manifest文件中页面路由信息router.page可增加启动模式字段launchMode,用于声明该页面的启动模式

页面启动模式参数:

属性类型默认值必填描述
launchMode 1050+Stringstandard声明页面的启动模式,支持"singleTask","standard"两种页面启动模式。标识为"singleTask"模式时每次打开目标页面都会打开已有的目标页面并回调onRefresh生命周期函数,清除该页面上打开的其他页面,没有打开过此页面时会创建新的目标页面实例。标识为"standard"模式时会每次打开新的目标页面(多次打开目标页面地址时会存在多个相同页面)首页仅支持"singleTask"模式。

示例:

  1. "router": {
  2. "entry": "PageA",
  3. "pages": {
  4. "PageA": {
  5. "launchMode": "singleTask",
  6. "component": "index"
  7. },
  8. "PageB": {
  9. "launchMode": "standard",
  10. "component": "index"
  11. },
  12. "PageC": {
  13. "launchMode": "singleTask",
  14. "component": "index"
  15. }
  16. }
  17. }

打开页面的行为逻辑:

若按顺序启动 PageA -> PageB -> PageC -> PageB -> PageC -> PageA

  • 打开PageA,首次打开时页面栈为空 页面栈为PageA
  • 打开PageB,PageB的启动模式为standard,即在PageA之上新建PageB的页面实例并显示 页面栈为PageA,PageB
  • 打开PageC,首次打开PageC,即在PageB之上新建PageC的页面实例并显示 页面栈为PageA,PageB,PageC
  • 打开PageB,PageB的启动模式为standard,即在PageC之上新建PageB的页面实例并显示 页面栈为PageA,PageB,PageC,PageB
  • 打开PageC,PageC页面实例已存在,即销毁PageC之上的页面实例PageB,回到之前打开的PageC的页面实例并回调此页面生命周期的onRefresh函数 页面栈为PageA,PageB,PageC
  • 打开PageA,PageA页面实例已存在,即销毁PageA之上的页面实例PageB和PageC,回到之前打开的PageA的页面实例并回调此页面生命周期的onRefresh函数 页面栈为PageA

动态声明

动态声明有两种方式。一种是在router.push中携带启动标识参数,另一种是在打开页面的链接中携带启动标识参数。启动标识参数可以控制页面打开行为。

页面启动标识参数:

参数类型必填说明
PARAM_LAUNCH_FLAG1050+String跳转快应用页面时传递的页面参数。携带clearTask时启动目标页面会清除此页面外的其他页面,存在多个目标页面时只保留最先打开的目标页面并回调onRefresh生命周期。如不存在目标页面时将清除所有页面并新建目标页面实例。

示例:

  1. // `1050+` 以'clearTask'标识启动页面
  2. router.push({
  3. uri: '/PageB',
  4. params: {
  5. ___PARAM_LAUNCH_FLAG___: 'clearTask'
  6. }
  7. })

打开页面的行为逻辑:

若已经打开页面栈为 PageA -> PageB -> PageC,此时以clearTask标识启动PageB

  • 销毁PageC页面实例
  • 销毁PageA页面实例
  • PageB页面实例已存在,回到此页面实例并回调此页面生命周期的onRefresh函数 若已经打开页面栈为 PageA -> PageC,此时以clearTask标识启动PageB
  • 销毁PageC页面实例
  • 销毁PageA页面实例
  • PageB页面实例不存在,新建PageB页面实例并显示