HarmonyOS/OpenHarmony 双击返回与退出App
作者:坚果,公众号:”大前端之旅“,哔哩哔哩,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 (应用上下文)
在使用的时候需要先导入。
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) {
// 第一次点击返回键,提示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%')
}
}
相关文章
- Android实现点击两次返回退出APP
- App开发成本接近于“零”是什么一种体验
- Typora如何把图片上传到图床smms.app
- SwiftUI + Core Data App 的内存占用优化之旅
- windows上传ipa到开发者中心(app store)的方法
- Flutter Web - 让 Web 与 APP UI 一致的另一种可能
- 快应用VS原生APP,优势在哪里?
- java基于springboot外卖系统在线订餐系统app源码厨艺论坛APP
- 《一步步了解iOS APP上架流程,让你的APP顺利进入App Store的大门》
- APP成本评估:安卓app系统软件开发费用明细一览表
- APP兼容性测试
- ios APP最新打包上线教程
- HBuilder包装iOS APP上App Store的详细过程
- 从入门到实践:Uni-app跨平台开发与应用
- 邀请函|移动互联网APP产品安全漏洞技术沙龙
- 实现在windows、linux下上传ios app到App Store
- 苹果证书(免费) + 打包ipa + 上传app store
- 什么,YouTube, App这些英文你都读错了
- APP与MySQL实现无缝连接让你办公更轻松(app连接mysql实例)
- 轻松实现优化App与MySQL连接速度(app连接mysql很慢)
- App测试技术利用Mysql助力质量保障(app测试mysql)
- APP快速连接MySQL数据库的指南(app怎么连接mysql)
- APP开发中MySQL至关重要(app开发要mysql)
- App企业使用MySQL实现信息管理梦想(app企业用mysql)
- App联手Oracle实现多样化应用(app与oracle)
- 学习MYSQL必备下载一款视频APP,轻松入门数据库技术(MYSQL下载视频app)
- 实现安卓App快速定制Redis整合安卓实战(安卓整合redis实战)
- Oracle中APP的强力删除(oracle中app删除)
- Oracle App驱动的路径探索之旅(oracle app目录)
- Oracle APP究竟有多重(oracle app太大)
- 小米投资健身服务APP“e健身”,后者提供健身课程的开发及培训等