UIAbility 组件是一种包含了 UI 的应用组件,主要用于和用户交互。
UIAbility 组件是系统调度的基本单元,为应用提供绘制界面的窗口,一个应用可以有多个 UIAbility 组件。
每一个 UIAbility 组件实例都会在最近任务列表中显示为一个对应的任务。那么就存在两种场景:
- 如果要在任务视图中只展示一个任务,那就是用一个 UIAbility;
- 想在任务视图中展示多个任务,或者同时打开多个窗口,那就使用多个 UIAbility 开发不同的模块功能
UIAbility 组件的生命周期
用户打开、切换和返回到对应的应用时候,应用中的 UIAbility 实例会触发不同的生命周期函数。
UIAbility 的生命周期有四个状态:Create、Foreground、Background 和 Destroy
- Create:就是应用在加载过程中,UIAbility 实例创建完成时触发,系统会调用 onCreate 函数,可以在这个函数中进行页面初始化操作;
- 在进入 Foreground 之前,系统会创建一个 windowStage,然后进入 onWindowStageCreate 回调,可以在回调中设置 UI 加载、设置 WindowStage 的事件监听。在onWindowStageCreate 回调中通过 loadContent()函数来设置应用要加载的页面。
- Foreground,是 UIAbility 实例切换到前台的时候触发,对应的是 onForeground()回调,是在 UI 可见之前触发的,在这个回调中可以申请系统需要的资源。
- Background,是 UIAbility 切换到后台的时候触发,也就是 UIAbility 的 UI 完全不可见之后,可以在 onBackground()回调中释放资源,或者执行一些比较耗时的操作,比如状态保存,停止定位功能,节省系统的资源消耗。
- 在 UIAbility 实例销毁之前,会进入 onWindowStageDestroy()回调,可以在这个回调中释放 UI 资源,比如注销获焦/失焦的 WindowStage 事件。进入 onWindowStageDestroy()回调之前,会有一个叫 WindowStageWillDestroy 状态,它对应的回调是 onWindowStageWillDestroy()回调,在这个回调中释放 windowStage 对象获取的资源。
- Destroy 状态,是在 UIAbility 实例销毁的时候触发,对应的回调是 onDestroy(),可以在这里面进行系统资源释放、数据保存等等操作。
完整的流程如图所示: