Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HarmonyOS/OpenHarmony 双击返回与退出App

HarmonyOS/OpenHarmony 双击返回与退出App

作者头像
徐建国
发布于 2023-02-23 03:40:22
发布于 2023-02-23 03:40:22
1.5K00
代码可运行
举报
文章被收录于专栏:个人路线个人路线
运行总次数:0
代码可运行

作者:坚果,公众号:”大前端之旅“,哔哩哔哩,OpenHarmony布道师,OpenHarmony校源行开源大使,51CTO博客专家博主,阿里云博客专家。

有时候我们会遇到这样的一个需求,就是双击返回与退出App

那么在HarmonyOS/OpenHarmony中如何如何实现呢,

HarmonyOS测试环境:ApI8,HarmonyOS3,

Open Harmony测试环境:ApI9,OpenHarmony3.2.beta4

在此之前,我们需要先来了解一下一下自定义组件的声明周期

自定义组件的声明周期

自定义组件的生命周期回调函数用于通知用户该自定义组件的生命周期,这些回调函数是私有的,在运行时由开发框架在特定的时间进行调用,不能从应用程序中手动调用这些回调函数。

需要提前说明的两个注意点是:

  • 允许在生命周期函数中使用Promise和异步回调函数,比如网络资源获取,定时器设置等;
  • 不允许在生命周期函数中使用async await。

接下来我们就来看一下组件声明周期

aboutToAppear

aboutToAppear函数在创建自定义组件的新实例后,在执行其build函数之前执行。允许在aboutToAppear函数中改变状态变量,更改将在后续执行build函数中生效。

aboutToDisappear

aboutToDisappear函数在自定义组件析构销毁之前执行。不允许在aboutToDisappear函数中改变状态变量,特别是@Link变量的修改可能会导致应用程序行为不稳定。

onPageShow

页面每次显示时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry修饰的自定义组件生效。

onPageHide

页面每次隐藏时触发一次,包括路由过程、应用进入前后台等场景,仅@Entry修饰的自定义组件生效。

onBackPress

当用户点击返回按钮时触发,仅@Entry修饰的自定义组件生效。返回true表示页面自己处理返回逻辑,不进行页面路由,返回false表示使用默认的路由返回逻辑。不设置返回值按照false处理。

看完声明周期的解释大家也就知道在哪儿对双击返回与界面退出提示做出逻辑处理了,对就是在onBackPress

接下来就看完整代码,就是对点击时间的一个比较。

然后那就是

@system.app (应用上下文)

在使用的时候需要先导入。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import app from '@system.app';

app.terminate

退出当前Ability。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import app from '@system.app';
import prompt from '@ohos.prompt';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'
  // 记录上一次点击时间
  private pretime: number = new Date().getTime();
  onBackPress() {
    if (-1 == this.pretime) {
      // 第一次点击返回键,提示toast
      prompt.showToast({
        message: "再按一次退出应用"
      })
      return true;
    } else {
      let currentTime = new Date().getTime();
      let flag = currentTime - this.pretime;
      if (flag > 2000) {
        //两次点击时间太长不做处理
        this.pretime = currentTime;
        return true;
      } else {
       
        app.terminate(); // 2秒内点击,退出当前Ability。
      }
    }
    return false;
  }

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
      }
      .width('100%')
    }
    .height('100%')
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-12-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大前端之旅 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【愚公系列】2023年11月 HarmonyOS教学课程 002-ArkTS语言(基本语法)
HarmonyOS的ArkTS语言是一种基于TypeScript开发的语言,它专为HarmonyOS系统开发而设计。ArkTS语言结合了JavaScript的灵活性和TypeScript的严谨性,使得开发者能够快速、高效地开发出高质量的HarmonyOS应用程序。
愚公搬代码
2025/06/02
1390
【愚公系列】2023年11月 HarmonyOS教学课程 002-ArkTS语言(基本语法)
鸿蒙开发之android开发人员指南《基础知识》
基于华为鸿蒙未来可能不再兼容android应用,推出鸿蒙开发系列文档,帮助android开发人员快速上手鸿蒙应用开发。
小帅聊鸿蒙
2024/06/11
3250
鸿蒙开发之android开发人员指南《基础知识》
【HarmonyOS 5】鸿蒙页面和组件生命周期函数
在 ArkUI 中,页面组件指的是被@Entry装饰的组件,其拥有独特的生命周期接口,这些接口对页面在不同状态下的行为控制起着关键作用。
GeorgeGcs
2025/05/08
1760
【前端转鸿蒙必看篇】:组件生命周期
不管是 react 还是 vue,我们写组件写页面的时候,通常都会使用生命周期,会在一些特别的生命周期函数里,只写一个必要的逻辑,比如 componentDidMount 执行一些 sdk 的初始化,或者数据的初始化请求,componentWillUnMount 里进行一些定时器的清楚。在 ArkUI 里也有类似的生命周期;
小帅聊鸿蒙
2024/10/30
3010
【前端转鸿蒙必看篇】:组件生命周期
HarmonyOS NEXT 实战系列09-生命周期
aboutToAppear:组件即将出现时回调该接口,具体时机为在创建自定义组件的新实例后,在执行其build()函数之前执行
用户8181473
2025/03/17
900
【OpenHarmony】ArkTS 语法基础 ③ ( @Component 自定义组件生命周期回调函数 | @Entry 页面生命周期回调函数 )
ArkTS 的 @Component 自定义组件 生命周期 从创建 到 销毁的全过程 , 如下图所示 :
韩曙亮
2024/06/05
1.3K0
【OpenHarmony】ArkTS 语法基础 ③ ( @Component 自定义组件生命周期回调函数 | @Entry 页面生命周期回调函数 )
遥遥领先!HarmonyOS ArkTS页面和自定义组件生命周期
上一篇文章我们介绍了 《遥遥领先! HarmonyOS 自定义组件的结构、函数、变量、参数规定,这篇太干了我要渴死了!!!》 现在我们系统的看看 ArkTS页面和自定义组件生命周期 的实现流程步骤
杨不易呀
2023/12/05
9460
遥遥领先!HarmonyOS ArkTS页面和自定义组件生命周期
ArkUI中自定义组件的生命周期
本文主要是介绍下在作为page以及component的时候的生命周期,以及调用API等应该在哪个生命周期使用。
小帅聊鸿蒙
2024/07/21
2080
ArkUI中自定义组件的生命周期
Router切换Navigation指导
从ArkUI组件树层级上来看,原先由Router管理的page在页面栈管理节点stage的下面。Navigation作为导航容器组件,可以挂载在单个page节点下,也可以叠加、嵌套。Navigation管理了标题栏、内容区和工具栏,内容区用于显示用户自定义页面的内容,并支持页面的路由能力。Navigation的这种设计上有如下优势:
徐建国
2024/07/05
3110
Router切换Navigation指导
HarmonyOS应用开发者高级认证(88分答案)
D. 取消订阅公共事件 2端云一体化工程目录结构分为哪些部分 A. 端开发工程(Application)
红目香薰
2023/10/11
22.6K0
HarmonyOS应用开发者高级认证(88分答案)
鸿蒙Navigation页面生命周期
Navigation作为路由容器,其生命周期承载在NavDestination组件上,以组件事件的形式开放。其生命周期大致可分为三类,自定义组件生命周期、通用组件生命周期和自有生命周期。其中,aboutToAppear和aboutToDisappear是自定义组件的生命周期(NavDestination外层包含的自定义组件),OnAppear和OnDisappear是组件的通用生命周期。剩下的六个生命周期为NavDestination独有。生命周期时序如下图所示
龙儿筝
2024/11/19
1740
鸿蒙Navigation页面生命周期
HarmonyOS NEXT 小说阅读器应用系列教程之组件生命周期与数据同步机制教程
在HarmonyOS应用开发中,理解组件的生命周期和数据同步机制对于构建高性能、响应迅速的应用至关重要。本教程将以UpDownFlipPage组件为例,深入讲解HarmonyOS中组件的生命周期函数以及各种数据同步装饰器的使用方法,帮助开发者掌握ArkTS组件状态管理的核心概念。
全栈若城
2025/05/19
830
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 三)
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
爱吃土豆丝的打工人
2023/10/15
7490
HarmonyOS学习路之方舟开发框架—学习ArkTS语言(基本语法 三)
简单3步,OpenHarmony上跑起ArkUI分布式小游戏
标准系统新增支持了方舟开发框架(ArkUI)、分布式组网和 FA 跨设备迁移能力等新特性,因此我们结合了这三种特性使用 ets 开发了一款如下动图所示传炸弹应用。
小帅聊鸿蒙
2024/09/11
1750
简单3步,OpenHarmony上跑起ArkUI分布式小游戏
鸿蒙(HarmonyOS)应用开发之性能优化实战-组件复用
若开发者的应用中存在以下场景,并成为UI线程的帧率瓶颈,应该考虑使用组件复用机制提升应用性能:
小帅聊鸿蒙
2024/10/16
3750
鸿蒙(HarmonyOS)应用开发之性能优化实战-组件复用
02 HarmonyOS Next仪表盘案例详解(一):基础篇
本文将详细分析 HarmonyOS 应用中的仪表盘(Dashboard)示例,该示例展示了一个业务数据概览页面,包含数据卡片和趋势图表区域。通过这个案例,我们可以学习 HarmonyOS 应用开发的核心技术和最佳实践。
全栈若城
2025/03/03
1300
鸿蒙自定义组件生命周期
组件生命周期,即一般用@Component装饰的自定义组件的生命周期,提供以下生命周期接口:
龙儿筝
2024/11/19
1850
鸿蒙自定义组件生命周期
HarmonyOS Next 优雅的路由跳转方案 ZRouter
然后 HMRouter 和 ZRouter 都是基于 Navigation 做的封装。
万少
2025/05/14
1520
HarmonyOS Next 优雅的路由跳转方案 ZRouter
01. HarmonyOS应用开发实践与技术解析
随着华为HarmonyOS生态的不断发展,越来越多的开发者开始关注并投入到HarmonyOS应用开发中。本文将通过一个实际的项目案例,详细讲解HarmonyOS应用开发的核心技术和最佳实践,帮助开发者快速掌握HarmonyOS应用开发的要点。
全栈若城
2025/03/03
1770
01. HarmonyOS应用开发实践与技术解析
鸿蒙原生应用从设置页看自定义组件的使用
IDE:DevEco Studio 4.0 Release Build Version: 4.0.0.600, built on October 17, 2023
徐建国
2024/01/11
8080
鸿蒙原生应用从设置页看自定义组件的使用
推荐阅读
相关推荐
【愚公系列】2023年11月 HarmonyOS教学课程 002-ArkTS语言(基本语法)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验