uniapp生命周期你必须了解
uniapp生命周期主要分为三个部分:应用生命周期、页面生命周期和组件生命周期。
一、应用生命周期:
应用生命周期官网连接:https://zh.uniapp.dcloud.io/collocation/App.html#applifecycle
onLaunch:当uniapp应用启动时触发,仅在应用第一次启动时触发。
onShow:当uniapp应用进入前台显示时触发,可以获取到应用被打开的方式和场景值。
onHide:当uniapp应用进入后台时触发。
onError:当uniapp应用发生脚本错误,或者api调用失败时触发,可以用来捕获和处理错误信息。
请注意,应用生命周期的监听仅可在App.vue中有效,在其他页面监听将无效。
二、页面生命周期:
页面生命周期官网连接:https://zh.uniapp.dcloud.io/tutorial/page.html#lifecycle
onLoad:页面加载时触发,一个页面只会调用一次,可以在onLoad的参数中获取到当前页面路径,以及页面跳转所带来的参数。
onShow:页面显示/切入前台时触发。
onReady:页面初次渲染完成时触发。
onHide:页面隐藏/切入后台时触发。
onUnload:页面卸载时触发,比如redirectTo或navigateBack的时候。
三、组件生命周期:
created:组件实例创建完成时调用。
mounted:组件挂载到实例/节点上后调用。
updated:组件数据更新,虚拟DOM重新渲染和打补丁,在这之后会重新渲染和更新节点。
beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed:Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑,所有的事件监听器都会被移除,所有的子实例也会被销毁。
需要注意的是,uniapp的生命周期函数结合了小程序的生命周期和vue的生命周期。对于界面和应用的生命周期,主要采用了小程序的生命周期;而对于组件的生命周期,则主要采用了vue的生命周期。
具体使用(特殊功能)
熟悉uniapp的生命周期函数后,确实可以实现一些特殊的要求,比如屏幕监控、息屏保护、疲劳提醒等。以下是利用这些生命周期函数实现的几个特殊功能的例子:
1、屏幕监控
功能描述:
监控屏幕是否处于活动状态,例如是否正在显示应用内容。
实现方式:
使用onShow和onHide生命周期函数来检测页面是否可见。
在onShow中,启动一个定时器,用于持续检查屏幕内容或进行其他监控任务。
在onHide中,清除该定时器,避免在后台不必要地消耗资源。
2. 息屏保护
功能描述:
当设备在一段时间内没有被操作时,自动触发息屏或锁屏功能,以保护屏幕和节省电量。
实现方式:
使用onHide或页面内的定时器来检测用户是否有一段时间没有操作。
当检测到用户长时间无操作时,可以调用设备的息屏API(如果存在)或展示一个锁屏界面。
当用户再次操作时,通过onShow或相应的事件来解锁屏幕或恢复应用界面。
3. 疲劳提醒
功能描述:
当用户使用应用时间过长时,提醒用户注意休息,避免长时间盯着屏幕造成眼睛疲劳。
实现方式:
使用全局的定时器或页面内的定时器来跟踪用户的使用时长。
当达到设定的疲劳提醒时间阈值时,通过弹出提示框、震动或播放声音等方式提醒用户。
用户响应提醒后,可以重置定时器并继续记录使用时长。
4. 动态调整界面亮度
功能描述:
根据环境光线的变化或用户的使用习惯,动态调整应用的界面亮度。
实现方式:
使用设备的光线传感器来获取环境光线强度。
在onLoad或onShow中初始化亮度调整逻辑,并持续监听光线变化。
根据光线强度动态调整应用的背景色、字体颜色或调用设备的亮度调整API。
5. 定时任务管理
功能描述:
在特定时间自动执行某些任务,如发送通知、更新数据等。
实现方式:
使用全局的定时器或第三方库来实现定时任务。
在应用启动时(如onLaunch)初始化定时任务。
根据设定的时间间隔或具体的时间点来触发相应的任务执行逻辑。
这些只是利用uniapp生命周期函数实现特殊功能的几个例子。实际上,通过合理的逻辑设计和与设备API的结合,你还可以实现更多复杂和创新的功能,以满足特定需求。