Skip to content

App — 应用生命周期

App 级生命周期基于浏览器 Visibility API,无需 bridge 调用,不受网络影响。

页面生命周期的区别:App 事件在整个应用层面触发,不区分页面。

API 参考

woo.getLaunchOptionsSync()

同步获取应用启动参数(首次调用时解析 URL hash,之后缓存)。
ts
const { path, query, scene } = woo.getLaunchOptionsSync()
console.log(path)  // 'pages/home/index'
console.log(query) // { from: 'share' }
console.log(scene) // 1001(默认场景值)
字段类型说明
pathstring启动页面路径
queryRecord<string, string>启动参数
scenenumber启动场景值

woo.onAppShow(callback)

应用从后台切回前台时触发(切换 App、解锁屏幕等)。

ts
const offShow = woo.onAppShow((opts) => {
  console.log('App 进入前台', opts)
  syncData()
})

// 取消订阅
offShow()

woo.onAppHide(callback)

应用进入后台时触发(按 Home 键、切换 App 等)。

ts
const offHide = woo.onAppHide(() => {
  console.log('App 进入后台')
  saveState()
})

完整使用示例

ts
// main.ts 或 App.vue
import { onMounted, onUnmounted } from 'vue'
import woo from 'mini-sdk'

// 获取启动参数(同步,无需 await)
const launchOptions = woo.getLaunchOptionsSync()
const initialPath = launchOptions.path

// 订阅 App 级生命周期
const offAppShow = woo.onAppShow(() => {
  // 从后台恢复:刷新登录状态、同步消息等
  refreshAuthToken()
  syncUnreadMessages()
})

const offAppHide = woo.onAppHide(() => {
  // 进入后台:暂停实时连接、保存草稿等
  pauseWebSocket()
  saveDraft()
})

onUnmounted(() => {
  offAppShow()
  offAppHide()
})

基于 OpenSumi IDE 构建