Back to Uni App

Exit

docs/api/exit.md

2.3.37.1 KB
Original Source
<!-- ## uni.exit(options?) @exit -->

::: sourceCode

uni.exit(options?) @exit

GitCode: https://gitcode.com/dcloud/uni-api/tree/alpha/uni_modules/uni-exit

GitHub: https://github.com/dcloudio/uni-api/tree/alpha/uni_modules/uni-exit

:::

退出当前应用

exit 兼容性

Web微信小程序AndroidiOSiOS uni-app x UTS 插件HarmonyOSHarmonyOS(Vapor)
<a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a><a style="color:unset;" href="https://vote.dcloud.net.cn/#/?name=uni-app%20x">x</a>3.914.334.334.715.0

app平台差异

app-android平台

Android平台的应用退出分热退出和冷退出。

  • 冷退出是彻底杀掉
  • 热退出是关闭可见的activity,后台进程不退出(比如push)

基本上主流Android App都是热退出。本API也是热退出。

热退出,即通知了os:这个App用户不用了,在os需要时可以回收。如果在os回收之前,用户又启动这个App,会感觉启动速度更快一些。

uni-app x 原生SDK模式中调用本API仅会关闭uni-app x应用。不会关闭宿主应用。

app-ios平台

iOS系统自身并没有退出应用的API。

uni-app x 原生SDK模式中支持通过本API关闭uni-app x应用。

app-harmony平台

在鸿蒙平台退出时会结束当前 Ability,应用会在最近任务列表中保留快照 文档 / 如果需要在停止 UIAbility 时,清理任务中心的相关任务(即不保留最近任务列表中的快照),需要在 module.json5 配置文件中将 removeMissionAfterTerminate 字段取值配置为 true

uni-app x 原生SDK模式时通过本API关闭uni-app x应用仅会关闭uni-app x实例,不会销毁所在的Ability。

参数

名称类型必填默认值兼容性描述
optionsExitOptions-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -uni.exit参数定义

options 的属性描述

名称类型必备默认值兼容性描述
success(res: ExitSuccess) => void-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -uni.exit成功回调函数定义
fail(res: ExitFail) => void-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -uni.exit失败回调函数定义
complete(res: any) => void-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -uni.exit完成回调函数定义

ExitSuccess 的属性值 @exitsuccess-values

名称类型必备默认值兼容性描述
errMsgstring-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -

ExitFail 的属性值 @exitfail-values

名称类型必备默认值兼容性描述
errCodenumber-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -错误码
errSubjectstring-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -统一错误主题(模块)名称
dataany-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -错误信息中包含的数据
causeError-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -源错误信息,可以包含多个错误,详见SourceError
errMsgstring-Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -

errCode 的属性描述

合法值兼容性描述
12001Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -系统不支持
12002Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -未知错误
12003Web: x; 微信小程序: x; Android: -; iOS: -; HarmonyOS: -iOS平台,仅在uni-app x SDK模式中支持应用退出

参见

示例

示例为hello uni-app x alpha分支,与最新HBuilderX Alpha版同步。与最新正式版同步的master分支示例另见

该 API 不支持 Web,请运行 hello uni-app x 到 App 平台体验

::: preview

appRedirect https://hellouniappx.dcloud.net.cn/appredirect.html?path=pages/API/exit/exit

uvue
<template>
  <view>
    <button @tap="exitAppClick">退出应用</button>
    <text>注:iOS仅在uni-app x SDK模式中支持应用退出</text>
  </view>
</template>

<script setup lang="uts">
  const exitAppClick = () => {
    uni.exit({
      success: function (res) {
        console.log(res)
      },
      fail: function(error){
        console.log(error)
      }
    })
  }
</script>

<style>

</style>

:::

切换应用到后台@back

Android

有的Android App,点back后不询问用户,直接隐藏到了后台。这种做法占用手机的资源一些,但确实也有一些App是这么做的。

Android的activity提供了将应用切换到后台的方法:

ts
// #ifdef APP-ANDROID
	UTSAndroid.getUniActivity()?.moveTaskToBack(true)
// #endif

HarmonyOS

在鸿蒙平台可以通过 Ability 的 moveAbilityToBackground 方法将应用切换到后台:

ts
UTSHarmony.getUIAbilityContext().moveAbilityToBackground()

通用类型

GeneralCallbackResult

名称类型必备默认值兼容性描述
errMsgstring-Web: -; 微信小程序: 4.41; Android: -; iOS: -; HarmonyOS: -错误信息