作者:坚果,公众号:”大前端之旅“,哔哩哔哩,OpenHarmony布道师,OpenHarmony校源行开源大使,电子发烧友鸿蒙MVP,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 (应用上下文)

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

import app from '@system.app';

app.terminate

退出当前Ability。

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) {// 第一次点击返回键,提示toastprompt.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%')}
}

HarmonyOS/OpenHarmony 双击返回与退出App相关推荐

  1. Android Native APP开发笔记:双击返回键退出应用单击返回键返回桌面

    文章目录 目的 基础说明 双击返回键退出应用 单击返回键回到桌面 总结 目的 双击返回键退出应用 很早之前就是Android中非常常见的一种功能,而目前好多安卓应用为了应用常驻都改为使用 单击返回键返 ...

  2. ionic4 返回键退出app

    ionic4 返回键退出app app.component.ts import { Component } from '@angular/core'; import { Router } from ' ...

  3. 【自用】Android 双击返回键退出

    2019独角兽企业重金招聘Python工程师标准>>> /*============* 双击退出*/ private static Boolean isExit = false;@O ...

  4. Flutter WillPopScope 双击返回与界面退出提示

    在码农的世界里,优美的应用体验,来源于程序员对细节的处理以及自我要求的境界,年轻人也是忙忙碌碌的码农中一员,每天.每周,都会留下一些脚印,就是这些创作的内容,有一种执着,就是不知为什么,如果你迷茫,不 ...

  5. h5打包app点击手机返回键直接退出app的解决方法

    h5打包的app,在android手机上,点击手机自带的物理返回键,直接退出了app.由于onbackPress在app上不生效,于是用js的方式去做了拦截,实现了点击物理返回键返回上一页,而不是退出 ...

  6. 在浏览器上浏览vue项目,后退按钮是可以正常返回上一页的,但打包成app后,点击手机上的物理返回按钮就直接退出app回到桌面...

    mui进行手机物理键的监听 首先安装 vue-awesome-mui npm i vue-awesome-mui 在main.js注册 import Mui from 'vue-awesome-mui ...

  7. 【Flutter 返回桌面不退出app解决办法】

    Flutter 返回桌面不退出app 1.MainActivity(kotlin版本的),之前的getFlutterView()提示找不到,改为flutterEngine.dartExecutor.b ...

  8. 1.微信回到首页直接退出网页 2.vue app返回直接退出问题, 首页返回两次退出解决

    问题描述: 1.项目是VUE写的, 之前返回一直是写的返回按键使用this.$router.go(-1)返回, 这样会导致返回会一直返回上一级历史,很多时候体验会非常不好, 但是使用指定路由的方式又会 ...

  9. Android 仿QQ退出(点击返回键不退出app,点击icon直接进入上次退出的页面)

    在登录页或者欢迎页onCreate方法加入如下代码: if((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) ! ...

最新文章

  1. PyTorch-Adam优化算法原理,公式,应用
  2. openlayers之style符号化
  3. IO流之过滤流介绍:
  4. matlab把图片转为base64
  5. java redis 批量删除key_Redis,就是这么朴实无华
  6. Python Django Cookie的设置和获取相关属性
  7. 如何用计算机打出love,游戏中名字的LOVE怎么用符号打出来?
  8. 毕业设计之路(2)——初识TCP
  9. 永远不会执行的cron表达式
  10. 测试nignx php请求并发数,nginx 优化(突破十万并发)
  11. 前端学习(2252)推送代码
  12. asp删除mysql_asp php 清空access mysql mssql数据库的代码
  13. tia v15 添加项目_硬技能,TIA 博途软件界面的介绍
  14. SQL2016安装错误:安装程序无法与下载服务器联系。请提供 Microsoft R Open 和 Microsoft R Server 安装文件的位置
  15. Please make sure that the app id is set correctly.
  16. HIVE一些字符处理
  17. 合成游戏中的数学原理
  18. 电信物联卡网络怎么样_中国电信物联网专用卡(中国电信物联网卡怎么样)
  19. graphpad prism怎么添加图例_如何用Graphpad prism添加多个图例
  20. 后浪小萌新Python --- 字典

热门文章

  1. 苹果appstore新推出了抽成收益降到15%的计划,正在申请中...
  2. iar for arm 第一课
  3. 万国觉醒迁服务器显示该王国还未开放,万国觉醒的定点迁城怎么用?怎么获得定点迁城?...
  4. Scrum敏捷价值观与原则
  5. 多租户 Saas 系统架构的设计思路
  6. html和dom区别,核心dom和html dom的区别
  7. 算法岗位真的需要顶会才能入场吗?
  8. c语言求最大公约数多一个负号,C语言 求最大公约数
  9. 加速度传感器的计步算法Pedometer
  10. python网课期中答案_中国大学python答案网课期末慕课MOOC答案