进入后台,Toast提示用户 HarmonyOS 鸿蒙Next
进入后台,Toast提示用户 HarmonyOS 鸿蒙Next
【设备信息】 Mate60
【API版本】 Api12
【DevEco Studio版本】 5.0.3.910
【问题描述】 app进入后台,弹toast提示用户进入后台,toast不显示,日志有提示:C03903/…AceSubWindow [(-1:100000:singleton)] init toast dialog window failed
promptAction.showToast({
message: 'app已进入后台运行',
duration: 2000,
showMode: promptAction.ToastShowMode.TOP_MOST
})
更多关于进入后台,Toast提示用户 HarmonyOS 鸿蒙Next的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
目前只能在app内部弹出toast,属于设计规格,为安全考虑,应用退出后台之后是不允许toast在桌面弹出的。可以使用横幅通知,看下面demo能否满足要求,app后台时,会弹出横幅通知提醒用户:
export default class EntryAbility extends UIAbility {
// 通知方法
publishNotification(){
let notificationRequest: notificationManager.NotificationRequest = { // 描述通知的请求
id: 1, // 通知ID
content: { // 通知内容
notificationContentType: notificationManager.ContentType.NOTIFICATION_CONTENT_BASIC_TEXT, // 普通文本类型通知
normal: { // 基本类型通知内容
title: '应用名称',
text: '应用在后台运行'
},
},
notificationSlotType: notificationManager.SlotType.SOCIAL_COMMUNICATION,
}
notificationManager.publish(notificationRequest).then(() => { // 发布通知
console.info('publish success');
}).catch((err: Error) => {
console.error(`publish failed,message is ${err}`);
});
}
onBackground(): void {
console.log("11111")
// 通知
this.publishNotification()
// Ability has back to background
hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onBackground');
}
}
更多关于进入后台,Toast提示用户 HarmonyOS 鸿蒙Next的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next中,要在应用进入后台时显示Toast提示,可以使用AbilityLifecycleCallback
来监听应用生命周期变化。具体步骤如下:
- 实现
AbilityLifecycleCallback
接口,并重写onAbilityBackground
方法,该方法在应用进入后台时触发。 - 在
onAbilityBackground
方法中,使用ToastDialog
显示提示信息。 - 注册
AbilityLifecycleCallback
监听器。
示例代码如下:
import Ability from '@ohos.application.Ability';
import AbilityLifecycleCallback from '@ohos.application.AbilityLifecycleCallback';
import { ToastDialog } from '@ohos.commonUI';
class MyLifecycleCallback extends AbilityLifecycleCallback {
onAbilityBackground(ability: Ability): void {
// 显示Toast提示
ToastDialog.show({ message: '应用已进入后台' });
}
}
// 注册生命周期回调
let lifecycleCallback = new MyLifecycleCallback();
globalThis.abilityContext.registerAbilityLifecycleCallback(lifecycleCallback);
这段代码会在应用进入后台时显示一个Toast提示,告知用户应用已进入后台。