• 下载
  • 社区

小程序运行机制

下载

小程序无需安装,用户第一次使用小程序时,支付宝 App 会从服务器下载小程序的资源,下载后的小程序资源会缓存在支付宝的客户端一段时候。当用户再次打开已经缓存资源的小程序时,会跳过下载过程,能够更快地打开小程序。

热启动和冷启动

  • 冷启动: 当用户打开未启动过,或者是已经销毁的小程序时,称为冷启动。此时小程序会执行初始化,初始化完成后,会触发 onLaunch 回调函数。
  • 热启动: 当用户打开已经关闭但仍处于后台运行的小程序时,称为热启动。在这种情况下,小程序并不会被销毁后重启,而仅是从后台切换到前台,此时,onShow 函数会触发,onLaunch 回调函数不会被触发。

前台 / 后台运行

  • 前台运行: 当用户首次打开小程序时候,小程序会处于前台运行状态。
  • 后台运行: 用户点击右上角关闭按钮关闭小程序,或者按下设备 Home 键离开支付宝 App 时,小程序并不会直接销毁,而是进入后台运行状态。
  • 从后台运行切换为前台运行: 当未被系统销毁的小程序再度被打开或者激活时,会从后台运行切换为前台运行。

可在 app.js 中注册前台 / 后台切换的回调函数。当小程序从后台进入前台显示时会触发 onShow,当小程序从前台到后台时会触发 onHide

缓存

开启本地缓存数据,进行存储、获取和删除等控制。
单个小程序的缓存总上限为 10MB。
同步方法会阻塞当前任务,直到同步方法处理返回。异步方法不会阻塞当前任务。

操作 同步 异步 描述
存储 my.setStorageSync my.setStorage 数据存储在本地缓存中指定的 key 中的接口,会覆盖掉原来该 key 对应的数据
读取 my.getStorageSync my.getStorage 获取缓存数据的接口
清除 my.clearStorageSync my.clearStorage 清除本地数据缓存的接口
删除 my.removeStorageSync my.removeStorage 删除缓存数据的接口
获取相关信息 my.getStorageInfoSync my.getStorageInfo 获取当前 storage 的相关信息的接口

销毁

用户点击右上角关闭按钮关闭小程序时,小程序仅是进入后台运行,不会被销毁。只有当小程序进入后台运行状态一定时间,或者占用系统资源过高时,才会被真正销毁。

常见问题

Q:小程序是否支持 cookie 和 session?
A:小程序不建议使用 cookie,不支持 session。推荐使用小程序缓存。

Q:使用了缓存 API 后,小程序的缓存什么时候会被清掉?
A:使用了缓存 API 必须使用清除 API,否则缓存不会被清除掉。

Q:小程序启动报错Error: EACCES: permission denied, mkdir /Users/xiaoqiang/Tuhu/Gitlab/Ali_ App/Ali_App/dist/.tea
A:权限问题,用超级用户来执行。在npm install 指令前加 sudo 变为: sudo npm install。

Q:打开小程序报错“系统异常,暂时无法启动,请稍后再试”
A:支付宝 APP 版本过低,不支持某些 API 或者组件,会报这样的错误。建议做 兼容 处理。