浏览、切换和退出应用时,应用中UlAbility实例会在其生命周期的不同状态之间转换。
下图中可以看到,UIAbility启动后会大致分为4个状态
Create、Foreground、Background、Destroy
WindowStageCreate与WindowStageDestroy是UIbility中管理UI界面功能的两个命周期回调。
每个UIAbility都包含了一个UIAbilityContext属性。
UIAbility功能主要是处理生命周期,其余操作UIAbility的方法例如:startUIAbility(),connectUIAbility,terminateSelf()等方法,都是在UIAbilityContent中实现的。
Create:在应用加载中UIAbility示例创建完成时触发的。系统会调用onCreate()回调我们可以在该回调中进行应用初始化操作,相当于应用初始化。可以进行变量定义,资源加载等,用于后续的UI页面展示。 WindowStageCreate:UIAbility创建完成之后,在进入Foreground之前,系统会创建一个WindowStage,WindowStage创建完成后会进入onWindowStageCreate回调,我们可以在该回调中设置UI页面加载,设置WindowStage订阅事件,在onWindowStageCreate回调中通过loaclContent()方法设置应用要加载的页面,并根据需要订阅WindowStage事件,例如(获取焦点|失去焦点,可见|不可见) Foreground与Background状态:分别在UIAbility实例切换至前台后时触发,对应于:【onForeground()】与【onBackground()】回调,onForeground()在UIAbility的UI界面可见之前,如UIAbility切换至前台之前时触发,我们可以在onForeground()回调中申请系统需要的资源,或者重新申请在onBackground()中释放的资源,onBackground()回调在UIAbility的UI界面完全不可见之后,例如UIAbility切换至后台时触发,我们可以在onBackground()回调中释放UI不可见时无用的资源,或者在此回调中执行较为耗时的操作,例如状态保存等。例如在使用过程中需要使用用户定位时假设应用已经获得定位权限授权,在UI界面显示之前,我们可以在onForeground()中开启定位功能,从而获取到当前的位置信息,当应用切换到后台状态,我们可以在onBackground()回调中停止定位功能。 WindowStageDestroy:在UIAbility实例销毁之前,会先进入到onWindowStageDestroy()回调,我们可以在这个回调中释放UI界面的资源,例如在onWindowStageDestroy()中注销获焦|失焦等WindowStage()事件。 Destroy:在UIAbility实例销毁时触发,我们可以在这里进行系统资源的释放,数据的保存等操作,例如,调用terminateSelf()方法停止当前UIAbility实例,从而完成UIAbility实例的销毁,或者用户使用最近任务列表关闭该UIAbility实例,也能完成UIAbility的销毁。
这是对应的回调文件。
回调文件内容,这里能看到创建已经操作前后的函数,我们可以打印一个输出语句来测试。