onPrepareToTerminate 需要配置权限 ohos.permission.PREPARE_APP_TERMINATE
参考链接:文档中心
import { emitter } from '@kit.BasicServicesKit';
import { common } from '@kit.AbilityKit';
import { TipsDialog } from '@kit.ArkUI';
// entryAbility.ets 在你的uiability中添加如下生命周期
onPrepareToTerminate() {
// 开发者定义预关闭动作
emitter.emit("windowWillDestroy")
emitter.on("close",(data)=>{
this.context.terminateSelf();
})
return true; // 已定义预关闭操作后,返回true表示UIAbility取消关闭
}
// Index.ets:
@Entry
@Component
struct Page {
@State message: string = 'Hello World';
dialogControllerImage: CustomDialogController = new CustomDialogController({
builder: TipsDialog({
content: '想要关闭这个APP嘛?',
primaryButton: {
value: '取消',
action: () => {
console.info('Callback when the first button is clicked')
},
},
secondaryButton: {
value: '退出',
role: ButtonRole.ERROR,
action: () => {
emitter.emit("close");
console.info('Callback when the second button is clicked')
}
},
onCheckedChange: () => {
console.info('Callback when the checkbox is clicked')
}
}),
})
onPageShow(): void {
emitter.on("windowWillDestroy", () => {
let ablityContext = getContext() as common.UIAbilityContext // 这行没用到
ablityContext.showAbility() // 这行没用到
console.log("yes")
this.dialogControllerImage.open()
})
}
build() {
RelativeContainer() {
Text(this.message)
.id('PageHelloWorld')
.fontSize(50)
.fontWeight(FontWeight.Bold)
.alignRules({
center: { anchor: '__container__', align: VerticalAlign.Center },
middle: { anchor: '__container__', align: HorizontalAlign.Center }
})
}
.height('100%')
.width('100%')
}
}