IT廉连看——Uniapp——应用生命周期

IT廉连看——Uniapp——应用生命周期

[IT廉连看]  

目标:
  • 了解APP.vue这个页面

  • 了解所有的应用生命周期

  • 熟练编写常用的应用生命周期

1、App.vue:

在UniApp中,App.vue是应用的根组件。它类似于其他前端框架中的根组件,如Vue.js中的App.vue或React中的App.js

App.vue通常包含应用级别的配置、样式和逻辑,以及应用的全局导航栏、底部栏等元素。它负责整个应用的初始化、路由管理以及全局状态的管理。在App.vue中,你可以定义应用的全局生命周期函数、全局样式,以及一些全局配置。

App.vue中,我们可以通过生命周期函数来管理应用的初始化、前后台切换等事件。同时,你可以在这里定义全局的样式、全局的组件(如导航栏、底部栏)以及其他一些全局的配置。

总之,App.vue是UniApp应用的根组件,负责管理整个应用的初始化和全局配置。

2、应用生命周期

uni-app 支持如下应用生命周期函数:

函数名说明平台兼容
onLaunchuni-app 初始化完成时触发(全局只触发一次),参数为应用启动参数,同 uni.getLaunchOptionsSync 的返回值
onShowuni-app 启动,或从后台进入前台显示,参数为应用启动参数,同 uni.getLaunchOptionsSync 的返回值
onHideuni-app 从前台进入后台
onErroruni-app 报错时触发app-uvue 不支持
onUniNViewMessagenvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯app-uvue 不支持
onUnhandledRejection对未处理的 Promise 拒绝事件监听函数(2.8.1+ app-uvue 暂不支持)app-uvue 不支持
onPageNotFound页面不存在监听函数app-uvue 不支持
onThemeChange监听系统主题变化app-uvue 不支持
onLastPageBackPress最后一个页面按下Android back键,常用于自定义退出app-uvue-android 3.9+
onExit监听应用退出app-uvue-android 3.9+

3、应用生命周期函数的使用及示例代码:

3.1 onLaunch的用法及示例代码

在UniApp中,onLaunch是全局应用生命周期函数之一,用于应用初始化完成时触发。它只会在应用初始化时执行一次。你可以在App.vue文件中的onLaunch函数中执行应用初始化的相关操作。

示例代码:
// App.vue
​
<script>
export default {
  // 应用初始化完成时触发的生命周期函数
  onLaunch(options) {
    console.log('应用初始化完成', options);
​
    // 在这里可以执行一些应用初始化的操作,如获取用户信息、初始化全局变量等
    // 示例:获取设备信息
    uni.getSystemInfo({
      success: function(res) {
        console.log('设备信息', res);
      }
    });
  },
​
  // 应用进入前台时触发的生命周期函数
  onShow(options) {
    console.log('应用进入前台', options);
  },
​
  // 应用进入后台时触发的生命周期函数
  onHide() {
    console.log('应用进入后台');
  }
}
</script>

在这个示例中,当应用初始化完成时,onLaunch生命周期函数会被触发。在这个函数中,我们可以执行一些应用初始化的操作,比如获取设备信息、初始化全局变量等。在示例中,我们使用uni.getSystemInfo方法获取设备信息,并在成功回调中打印出来。

这样,你可以在onLaunch生命周期函数中进行应用初始化的相关操作,确保应用在初始化阶段完成所需的配置和准备工作。

3.2 onShow的用法及示例代码

在UniApp中,onShow是全局应用生命周期函数之一,用于应用进入前台时触发。它会在应用启动、或从后台进入前台时执行。你可以在App.vue文件中的onShow函数中执行一些在应用进入前台时需要处理的操作。

示例代码:
<script>
export default {
  // 应用初始化完成时触发的生命周期函数
  onLaunch(options) {
    console.log('应用初始化完成', options);
​
    // 在这里可以执行一些应用初始化的操作
  },
​
  // 应用进入前台时触发的生命周期函数
  onShow(options) {
    console.log('应用进入前台', options);
​
    // 在这里可以执行一些在应用进入前台时需要处理的操作
    // 示例:检查用户登录状态
    const userInfo = uni.getStorageSync('userInfo');
    if (userInfo) {
      console.log('用户已登录');
    } else {
      console.log('用户未登录');
    }
  },
​
  // 应用进入后台时触发的生命周期函数
  onHide() {
    console.log('应用进入后台');
  }
}
</script>

在这个示例中,当应用进入前台时,onShow生命周期函数会被触发。在这个函数中,我们可以执行一些在应用进入前台时需要处理的操作。在示例中,我们通过uni.getStorageSync方法获取本地缓存中的用户信息,判断用户是否已登录,并在控制台输出相应的信息。

这样,你可以在onShow生命周期函数中处理一些与应用前台展示相关的逻辑,比如检查用户登录状态、刷新页面数据等。

3.3 onHide的用法及示例代码

在UniApp中,onHide是全局应用生命周期函数之一,用于应用进入后台时触发。它会在应用从前台进入后台时执行。你可以在App.vue文件中的onHide函数中执行一些在应用进入后台时需要处理的操作。

示例代码:
<script>
export default {
  // 应用初始化完成时触发的生命周期函数
  onLaunch(options) {
    console.log('应用初始化完成', options);
​
    // 在这里可以执行一些应用初始化的操作
  },
​
  // 应用进入前台时触发的生命周期函数
  onShow(options) {
    console.log('应用进入前台', options);
​
    // 在这里可以执行一些在应用进入前台时需要处理的操作
  },
​
  // 应用进入后台时触发的生命周期函数
  onHide() {
    console.log('应用进入后台');
​
    // 在这里可以执行一些在应用进入后台时需要处理的操作
    // 示例:保存数据到本地缓存
    const dataToSave = { key: 'value' };
    uni.setStorageSync('cachedData', dataToSave);
  }
}
</script>

在这个示例中,当应用进入后台时,onHide生命周期函数会被触发。在这个函数中,我们可以执行一些在应用进入后台时需要处理的操作。在示例中,我们通过uni.setStorageSync方法将一些数据保存到本地缓存,以便在应用下次启动时可以使用。

这样,你可以在onHide生命周期函数中处理一些与应用进入后台相关的逻辑,比如保存数据、清理资源等。

3.4 onError的用法及示例代码

在UniApp中,onError是全局应用生命周期函数之一,用于监听应用运行时的错误信息。当应用发生未捕获的错误时,onError函数会被调用,你可以在这个函数中处理错误信息或进行相应的记录。

示例代码:
<script>
export default {
  // 应用初始化完成时触发的生命周期函数
  onLaunch(options) {
    console.log('应用初始化完成', options);
​
    // 在这里可以执行一些应用初始化的操作
  },
​
  // 应用进入前台时触发的生命周期函数
  onShow(options) {
    console.log('应用进入前台', options);
​
    // 在这里可以执行一些在应用进入前台时需要处理的操作
  },
​
  // 应用进入后台时触发的生命周期函数
  onHide() {
    console.log('应用进入后台');
​
    // 在这里可以执行一些在应用进入后台时需要处理的操作
  },
​
  // 监听应用运行时的错误信息
  onError(error) {
    console.error('应用发生错误', error);
​
    // 在这里可以处理错误信息,如向服务器发送错误日志
    // 示例:上报错误信息到服务器
    uni.request({
      url: 'https://example.com/log/error',
      method: 'POST',
      data: {
        error: error.message,
        stack: error.stack
      },
      success: function(res) {
        console.log('错误日志上报成功', res);
      },
      fail: function(err) {
        console.error('错误日志上报失败', err);
      }
    });
  }
}

在这个示例中,当应用发生未捕获的错误时,onError生命周期函数会被调用,并传入错误信息作为参数。在这个函数中,我们可以处理错误信息,比如向服务器发送错误日志。在示例中,我们通过uni.request方法向服务器上报错误信息,并在控制台打印出上报结果。

这样,咱们可以在onError生命周期函数中处理应用运行时的错误信息,以便及时发现和解决问题。

3.5 onUniNViewMessage的用法及示例代码

在UniApp中,onUniNViewMessage是用于接收来自nvue页面或uni.createInnerAudioContext等组件发出的消息的生命周期函数。通过onUniNViewMessage,可以在页面之间传递消息或者与原生组件进行通信。

示例代码:
<script>
export default {
  // 应用初始化完成时触发的生命周期函数
  onLaunch(options) {
    console.log('应用初始化完成', options);
​
    // 在这里可以执行一些应用初始化的操作
  },
​
  // 应用进入前台时触发的生命周期函数
  onShow(options) {
    console.log('应用进入前台', options);
​
    // 在这里可以执行一些在应用进入前台时需要处理的操作
  },
​
  // 应用进入后台时触发的生命周期函数
  onHide() {
    console.log('应用进入后台');
​
    // 在这里可以执行一些在应用进入后台时需要处理的操作
  },
​
  // 监听来自nvue页面或组件的消息
  onUniNViewMessage(message) {
    console.log('收到来自nvue页面或组件的消息', message);
​
    // 在这里可以根据收到的消息进行相应的处理
    // 示例:根据消息内容更新页面数据
    if (message.type === 'updateData') {
      this.updateData(message.data);
    }
  },
​
  methods: {
    // 更新页面数据的方法
    updateData(data) {
      console.log('更新页面数据', data);
      // 在这里可以更新页面的数据或进行其他操作
    }
  }
}
</script>

在这个示例中,当收到来自nvue页面或组件的消息时,onUniNViewMessage生命周期函数会被调用,并传入消息对象作为参数。在这个函数中,我们可以根据消息的内容进行相应的处理,例如更新页面数据。

这样,可以通过onUniNViewMessage生命周期函数实现不同页面之间的消息传递和通信。

3.6 onLastPageBackPress的用法及示例代码

onLastPageBackPress不是 UniApp 的标准生命周期函数。然而,UniApp 提供了一种机制,允许监听页面返回事件,可以在页面返回时触发相应的逻辑。

可以通过监听beforeEnter生命周期函数来实现类似于onLastPageBackPress的功能。在这个生命周期函数中,你可以判断当前页面是否是栈中的最后一个页面,如果是则执行相应的逻辑。

示例代码:
// 在需要监听返回事件的页面中,例如 A 页面
​
<script>
export default {
  beforeEnter(to, from, next) {
    // 判断当前页面是否是栈中的最后一个页面
    if (this.$route.path === '/') {
      // 如果是最后一个页面,执行相应的逻辑
      console.log('这是栈中的最后一个页面,可以执行返回时的逻辑');
      // 这里可以执行返回逻辑,比如弹出确认框等
    }
    next();
  }
}
</script>

在这个示例中,我们在页面的beforeEnter生命周期函数中监听页面的返回事件。通过判断当前页面是否是栈中的最后一个页面,来确定是否执行返回时的逻辑。

可以根据实际需求在beforeEnter生命周期函数中执行相应的逻辑,比如弹出确认框、执行数据保存操作等。这样就可以实现在 UniApp 中类似于onLastPageBackPress的功能。

3.7 onExit的用法及示例代码

UniApp 中并没有名为 onExit 的生命周期函数。但是,你可以通过监听全局的 beforeUnload 事件来实现类似于 onExit 的功能,该事件在用户关闭页面或离开页面时触发。

示例代码:
<template>
  <view>
    <!-- 应用内容 -->
    <router-view />
  </view>
</template>
​
<script>
export default {
  beforeMount() {
    // 在组件挂载前监听 beforeUnload 事件
    window.addEventListener('beforeunload', this.handleBeforeUnload);
  },
  beforeDestroy() {
    // 在组件销毁前移除 beforeUnload 事件监听
    window.removeEventListener('beforeunload', this.handleBeforeUnload);
  },
  methods: {
    handleBeforeUnload(event) {
      // 处理应用退出逻辑
      console.log('应用即将退出');
      // 可以在这里进行一些清理工作或者向服务器发送退出事件
      // 如果需要阻止默认的退出行为,可以调用 event.preventDefault()
    }
  }
};
</script>

在这个示例中,我们在 App.vue 中监听了 beforeUnload 事件,通过 window.addEventListenerwindow.removeEventListener 方法来添加和移除事件监听器。当用户关闭页面或者离开页面时,会触发 beforeUnload 事件,从而执行 handleBeforeUnload 方法中的逻辑。在 handleBeforeUnload 方法中,你可以进行一些清理工作或者向服务器发送退出事件。

需要注意的是,在 handleBeforeUnload 方法中,如果需要阻止默认的退出行为,可以调用 event.preventDefault() 方法。但是需要注意,并非所有浏览器都支持阻止用户退出操作,具体行为可能因浏览器而异。

[IT廉连看]  

小结:
  • APP.vue 是负责哪些配置

  • 应用生命周期函数有几个,常用的有哪些?

  • 编写应用生命周期函数代码并查看效果

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要将Uniapp打包成安卓应用并使用自有证书,可以按照以下步骤进行操作: 1. 在打包配置选项界面中选择Android作为目标平台,并选择使用自有证书。\[1\] 2. 如果你或者公司已经申请了证书,可以选择使用自有证书。如果没有,可以选择使用公测证书,用于测试目的。一般来说,广告等内容不需要添加。选择快速打包即可。\[1\] 3. 等待打包完成后,在控制台中会出现打包成功的提示。点击打开所在目录,你将会看到刚刚生成的apk文件。你可以进行自测,也可以将其发送给他人进行安装。如果要安装到手机上,可以通过将手机与电脑连接,然后右键apk文件,选择安装到手机。这样就可以在手机上安装并查看你编写的APP了。\[2\] 4. 生成自有证书的步骤如下: - 打开命令行工具,使用keytool -genkey命令生成证书。例如,使用以下命令生成证书: ``` keytool -genkey -alias testalias -keyalg RSA -keysize 2048 -validity 36500 -keystore test.keystore ``` 其中,testalias是后面在HBuilder上要填写的证书别名,test.keystore是后面在HBuilder上要填写的证书文件,test可以根据需要进行修改,36500表示证书的有效时间为100年,单位为天,可以根据需要进行调整。自己输入的密钥库口令是后面在HBuilder上要填写的证书私钥密码(例如123456)。\[3\] - 根据提示输入相关信息即可完成证书生成。 希望以上信息对你有所帮助! #### 引用[.reference_title] - *1* *2* [【uniapp小程序】—— APP项目云打包(安卓)](https://blog.csdn.net/qq_49002903/article/details/126937483)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [uniapp-打包安卓app(如何生成证书)](https://blog.csdn.net/qq_36738092/article/details/130644632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值