HarmonyOS 鸿蒙Next 侧滑2次退出app

发布于 1周前 作者 eggper 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 侧滑2次退出app

onBackPress(): boolean | void {
  let nowTime = Date.now()
  if (nowTime - this.firstBcakTimestamp < 1000) {
    const context = getContext(this) as common.UIAbilityContext
    //退出app
    context.terminateSelf()
  } else {
    this.firstBcakTimestamp = nowTime
    // 这个自定义弹窗 快速返回2次,第二次是关闭弹窗不能正常退出app
    new ToastViewFunc().handlerPublicToastFunc(this.getUIContext(), this.getUIContext().getPromptAction(),
      '再按一次返回键,可以退出程序')
    // 这个弹窗正常 快速返回2次正常退出app,但是这个弹窗不能加图片
    // promptAction.showToast({ message:'再按一次返回键,可以退出程序' })
  }
  return true
}
new ToastViewFunc().handlerPublicToastFunc 这个是使用   promptAction.openCustomDialog 封装的弹窗

现在的问题是用这个自定义弹窗在1s内我第二次侧滑退出app,他是去关闭了这个弹窗,无法退出app。我用 promptAction.showToast 就不会出现问题,但是这个弹窗无法文字加图片显示

这个有什么解决的方案吗


更多关于HarmonyOS 鸿蒙Next 侧滑2次退出app的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

我这边是在this.promptAction.openCustomDialog下的onWillDismiss方法处理的

onWillDismiss: (dismissDialogAction: DismissDialogAction) => { //弹窗响应
  console.info("reason" + JSON.stringify(dismissDialogAction.reason))
  console.log("dialog onWillDismiss")
  if (dismissDialogAction.reason == 0 && this.isSwipeBackEnabled) { //手势返回时,关闭弹窗。
    if (MyPromptActionUtil.myExitAppPromptActionUtil) { //手势返回,如果发现当前退出弹窗在显示,那么退出app
     MyRouterUtil.exitApp()
    }
    this.promptAction.closeCustomDialog(this.contentNode)
  }
  if (dismissDialogAction.reason == 1 && this.isMaskTapToCloseEnabled) {
    this.promptAction.closeCustomDialog(this.contentNode)
  }
},

更多关于HarmonyOS 鸿蒙Next 侧滑2次退出app的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,实现侧滑2次退出App的功能,通常依赖于系统提供的导航栏和手势识别机制。这种操作不属于标准API功能,但开发者可以通过自定义Activity或页面生命周期管理来实现类似效果。

具体实现步骤如下:

  1. 监听侧滑手势:首先,需要在App中监听用户侧滑手势。这通常通过重写Activity的onBackPressed()方法来实现,但该方法默认只响应一次侧滑退出请求。

  2. 实现2次侧滑逻辑:为了实现2次侧滑退出,可以在全局状态(如Application类、ViewModel或单例模式)中维护一个计数器,用于记录连续侧滑的次数。每次onBackPressed()被调用时,检查并更新这个计数器。

  3. 判断并处理:当计数器达到2时,执行退出App的操作(如调用finishAffinity()System.exit(0),但需注意System.exit(0)在Android中不推荐使用,因为它会终止整个进程)。同时,重置计数器。

  4. 用户体验优化:为了提升用户体验,可以在第1次侧滑时给出提示(如Toast消息),告知用户需要再次侧滑才能退出。

请注意,以上实现方式可能因系统版本或设备差异而有所不同,且需确保符合HarmonyOS系统的应用设计规范。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部