You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在watchOS中检测用户关闭应用?避免Timer启动时间存入UserDefaults

解决watchOS SwiftUI应用中检测应用主动关闭的问题
  • watchOS 环境下不存在UIApplication,对应的是WKExtension,你需要使用WatchKit框架提供的终止通知替代iOS的UIApplication.willTerminateNotification。

  • 正确实现步骤:

    1. 导入WatchKit框架(无需导入UIKit)
    2. 使用WKExtension.shared().applicationWillTerminateNotification作为监听的通知名称

以下是可直接使用的代码示例:

import SwiftUI
import WatchKit

struct TimerView: View {
    var body: some View {
        Text("计时器界面")
            .onReceive(NotificationCenter.default.publisher(for: WKExtension.shared().applicationWillTerminateNotification)) { _ in
                // 用户主动关闭应用时,删除UserDefaults中保存的启动时间
                UserDefaults.standard.removeObject(forKey: "timerStartDate")
            }
    }
}
  • 逻辑说明:当用户主动关闭watchOS应用时,该通知会被触发,此时你可在闭包中执行清理操作——删除UserDefaults里存储的启动时间,确保应用下次启动时不会读取无效的计时起点。

  • 注意:watchOS应用生命周期和iOS存在差异,若系统因资源不足等原因强制终止应用,该通知可能无法触发,但用户主动滑动关闭应用的场景下,通知可稳定触发。

内容的提问来源于stack exchange,提问作者Fanfan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 14:45:06