2017网站建设前景,快手怎么引流推广,wordpress文章跳转,做exo小说的网站一、UIAbility生命周期 为了实现多设备形态上的裁剪和多窗口的可扩展性#xff0c;系统对组件管理和窗口管理进行了解耦。UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态#xff0c;WindowStageCreate和WindowStageDestroy为窗口管理器#xff08…一、UIAbility生命周期 为了实现多设备形态上的裁剪和多窗口的可扩展性系统对组件管理和窗口管理进行了解耦。UIAbility的生命周期包括Create、Foreground、Background、Destroy四个状态WindowStageCreate和WindowStageDestroy为窗口管理器WindowStage在UIAbility中管理UI界面功能的两个生命周期回调从而实现UIAbility与窗口之间的弱耦合。
如下图所示 1、Create状态在UIAbility实例创建时触发系统会调用onCrerate回调。可以在onCrerate回调中进行相关初始化操作。
import UIAbility from ohos.app.ability.UIAbility;
import window from ohos.window;export default class EntryAbility extends UIAbility {onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {// 应用初始化...}...
}例如用户打开电池管理应用在应用加载过程中在UI页面可见之前可以在onCreate回调中读取当前系统的电量情况用于后续的UI页面展示。
2、UIAbility实例创建完成之后在进入Foreground之前系统会创建一个WindowStage。每一个UIAbility实例都对应持有一个WindowStage实例。
WindowStage为本地窗口管理器用于管理窗口相关的内容例如与界面相关的获焦/失焦、可见/不可见。
可以在onWindowStageCreate回调中设置UI页面加载、设置WindowStage的事件订阅。
在onWindowStageCreate(windowStage)中通过loadContent接口设置应用要加载的页面
import UIAbility from ohos.app.ability.UIAbility;
import window from ohos.window;export default class EntryAbility extends UIAbility {...onWindowStageCreate(windowStage: window.WindowStage) {// 设置UI页面加载// 设置WindowStage的事件订阅获焦/失焦、可见/不可见...windowStage.loadContent(pages/Index, (err, data) {...});}...
}3、Foreground和Background状态分别在UIAbility切换至前台或者切换至后台时触发。
分别对应于onForeground回调和onBackground回调。
onForeground回调在UIAbility的UI页面可见之前即UIAbility切换至前台时触发。可以在onForeground回调中申请系统需要的资源或者重新申请在onBackground中释放的资源。
onBackground回调在UIAbility的UI页面完全不可见之后即UIAbility切换至后台时候触发。可以在onBackground回调中释放UI页面不可见时无用的资源或者在此回调中执行较为耗时的操作例如状态保存等。
import UIAbility from ohos.app.ability.UIAbility;
import window from ohos.window;export default class EntryAbility extends UIAbility {...onForeground() {// 申请系统需要的资源或者重新申请在onBackground中释放的资源...}onBackground() {// 释放UI页面不可见时无用的资源或者在此回调中执行较为耗时的操作// 例如状态保存等...}
}例如用户打开地图应用查看当前地理位置的时候假设地图应用已获得用户的定位权限授权。在UI页面显示之前可以在onForeground回调中打开定位功能从而获取到当前的位置信息。当地图应用切换到后台状态可以在onBackground回调中停止定位功能以节省系统的资源消耗。 4、前面我们了解了UIAbility实例创建时的onWindowStageCreate回调的相关作用。
对应于onWindowStageCreate回调。在UIAbility实例销毁之前则会先进入onWindowStageDestroy回调我们可以在该回调中释放UI页面资源。
import UIAbility from ohos.app.ability.UIAbility;
import window from ohos.window;export default class EntryAbility extends UIAbility {...onWindowStageDestroy() {// 释放UI页面资源...}
}5、Destroy状态在UIAbility销毁时触发。可以在onDestroy回调中进行系统资源的释放、数据的保存等操作。
import UIAbility from ohos.app.ability.UIAbility;
import window from ohos.window;export default class EntryAbility extends UIAbility {...onDestroy() {// 系统资源的释放、数据的保存等...}
}二、UIAbility的启动模式
UIAbility当前支持singleton单实例模式、multiton多实例模式和specified指定实例模式3种启动模式。
singleton单实例模式
每次调用startAbility()方法时如果应用进程中该类型的UIAbility实例已经存在则复用系统中的UIAbility实例系统中只存在唯一一个该UIAbility实例。
即在最近任务列表中只存在一个该类型的UIAbility实例。
multiton多实例模式
用户在使用分屏功能时希望使用两个不同应用例如备忘录应用和图库应用之间进行分屏也希望能使用同一个应用例如备忘录应用自身进行分屏。
这种情况下可以将UIAbility配置为multiton多实例模式。每次调用startAbility()方法时都会在应用进程中创建一个该类型的UIAbility实例。
即在最近任务列表中可以看到有多个该类型的UIAbility实例。
specified指定实例模式
在UIAbility实例新创建之前允许开发者为该实例创建一个字符串Key新创建的UIAbility实例绑定Key之后后续每次调用startAbility方法时都会询问应用使用哪个Key对应的UIAbility实例来响应startAbility请求。如果匹配有该UIAbility实例的Key则直接拉起与之绑定的UIAbility实例否则创建一个新的UIAbility实例。运行时由UIAbility内部业务决定是否创建多实例。
singleton启动模式
singleton启动模式也是默认情况下的启动模式。
singleton启动模式每次调用startAbility()启动UIAbility时如果应用进程中该类型的UIAbility实例已经存在则复用系统中的UIAbility实例系统中只存在唯一一个该UIAbility实例。
singleton启动模式的开发使用在module.json5文件中的“launchType”字段配置为“singleton”即可。
{module: {...abilities: [{launchType: singleton,...}]}
}multiton启动模式
multiton启动模式每次调用startAbility()方法时都会在应用进程中创建一个该类型的UIAbility实例。
multiton启动模式的开发使用在module.json5文件中的“launchType”字段配置为“multiton”即可。 launchType: multiton,
specified启动模式
specified启动模式根据业务需要是否创建一个新的UIAbility实例。在UIAbility实例创建之前会先进入AbilityStage的onAcceptWant回调在onAcceptWant回调中为每一个UIAbility实例创建一个Key后续每次调用startAbility()方法创建该类型的UIAbility实例都会询问使用哪个Key对应的UIAbility实例来响应startAbility()请求。
在module.json5文件中的“launchType”字段配置为“specified”。
launchType: specified,