HarmonyOS 鸿蒙Next页面能否增加感知前后台切换的生命周期
HarmonyOS 鸿蒙Next页面能否增加感知前后台切换的生命周期 目前应用感知前后台切换在 EntryAbility onForeground/onBackground;
页面仅仅靠 onPageShow/onPageHide,不是很便于判断页面出现/消失的原因是切换前后台。
2 回复
如果组件需要感知应用切换前后台的生命周期变化,目前可以给组件设置一个应用前后台的变量,在应用前后台切换的时候,在UIAbility中对应的生命周期函数上将状态存在AppStorage中,在组件中获取AppStorage获取到状态变量的改变并执行对应的逻辑
//UIAbility中
...
onWindowStageCreate(windowStage: window.WindowStage) {
...
windowStage.loadContent('pages/Page1', (err, data) => {
AppStorage.setOrCreate<boolean>('video',true)
}
...
//Page页面中
@Entry
@Component
struct Page1 {
@State message: string = 'Hello World'
@StorageLink('video') isOnForeground:boolean = true
build() {
Row() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Vid({isOnForeground:this.isOnForeground})
}
.width('100%')
}
.height('100%')
}
}
@Component
struct Vid {
@Watch('change')@Link isOnForeground:boolean
@State message: string = 'video'
build() {
Text("message")
.fontSize(50)
.fontWeight(FontWeight.Bold)
.onClick(()=>{
this.message += this.isOnForeground
console.log(""+this.isOnForeground)
})
}
change() {
if (this.isOnForeground) {
console.log('组件在前台')
} else {
console.log('组件在后台')
}
}
}
更多关于HarmonyOS 鸿蒙Next页面能否增加感知前后台切换的生命周期的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html