Nebula

基础

fundamentals

H5Service, H5SessionH5Page 都是从 H5CoreNode 类扩展而来。以 H5Service 为根节点,它与其他类一同形成了树状结构构成了页面流程和导航。在一般情况下, H5PagesH5Session 的子节点, 而 H5SessionsH5Service 的子节点,在任何情况下只有一个 H5Service 根节点存在。

H5Service

H5Service 是 Nebula 里维护 H5 应用全局状态的基础类, 在 H5 应用的生命周期内只有一个 H5Service 的单例全局实例,以下是一些可以用 H5Service 来进行的操作

  • 创建且打开一个新的 Web activity
  • 创建且开启一个新的 Web page
  • 从共享空间存储和读取数据
  • 注册插件和 Provider
  • 监听应用的生命周期

H5Session

一个 H5Session 是由一叠 H5Pages 组成的完整业务流程。例如一个收银台的流程包括:一个购物车的小结页面,一个结账方式的选择页面,和最后一个结账确认页面。所有的页面都可以独立存在运作, H5Session 在其中的作用是把这些页面组织起立,按照业务逻辑把它们按序排列来完成业务。

当你使用 H5Service 创建且开启一个新的 Web page 时,如果当前没有 H5Session 的话,一个新的 H5Session 实例将被创建,并为后续创建的 Web page 共享。你可以从 H5Session 中移除页面直到页面叠为空,也可以使用 H5Session 所提供的方法来获取首页,以及监听该 H5Session 的生命周期。

H5Page

H5Page 是用户看得见,摸得着的页面,也是应用生命周期中最重要的一部分。你可以通过 URL 来加载内容,用 H5Param 来定制页面的外观和行为,甚至可以通过获取 H5Page 的视图层次,把 H5Page 视图和其他原生 UI 部件一起内嵌到同一个布局中。

事件

Nebula 提供了一套事件机制来管理事件在 H5Page, H5SessionH5Service 之间的流通顺序。一个 H5Event 可以在 H5Page, H5SessionH5Service 任何一层发生,事件派遣分为两步完成

  • 事件拦截。这个步骤中事件派遣的顺序为 H5Service -> H5Session or H5Page。事件可以在任何节点被拦截 (如果 interceptEvent() 返回 true )
  • 事件处理。这个步骤中事件派遣的顺序为 H5Page -> H5Session or H5Service。事件可以在任何节点被处理 (如果 handleEvent() 返回 true )

如果事件在派遣过程中被拦截或处理,该事件将被视为已被消费且不再继续流通。如果在派遣过程后事件依旧没有被拦截或处理,会有错误抛给呼叫方处理。