如何知道应用程序是不是从 SwiftUI 中的后台删除?
Posted
技术标签:
【中文标题】如何知道应用程序是不是从 SwiftUI 中的后台删除?【英文标题】:How to know if app is removed from background in SwiftUI?如何知道应用程序是否从 SwiftUI 中的后台删除? 【发布时间】:2021-10-20 11:04:51 【问题描述】:如何知道应用程序是否从 SwiftUI 中的后台删除?有没有类似 Swift 的方法以及如何使用?
【问题讨论】:
developer.apple.com/documentation/uikit/uiapplicationdelegate 【参考方案1】:我会研究Scene
协议。
我引用...
Scene 协议提供了场景修饰符,定义为协议 具有默认实现的方法,用于配置 场景。例如,您可以使用 onChange(of:perform:) 修饰符来 当值改变时触发动作。下面的代码清空一个 当窗口组中的所有场景都移动到 背景:
需要明确的是,这是 Apple 提供的示例...
struct MyScene: Scene
@Environment(\.scenePhase) private var scenePhase
@StateObject private var cache = DataCache()
var body: some Scene
WindowGroup
MyRootView()
.onChange(of: scenePhase) newScenePhase in
if newScenePhase == .background
cache.empty()
我将它放在我的 App 文件中,如下例所示(使用 Core Data 实现):
import SwiftUI
@main
struct MyApp: App
let persistenceController = PersistenceController.shared
@Environment(\.scenePhase) var scenePhase
var body: some Scene
WindowGroup
NavigationView()
.environment(\.managedObjectContext, persistenceController.container.viewContext)
.onChange(of: scenePhase) _ in
persistenceController.save()
【讨论】:
以上是关于如何知道应用程序是不是从 SwiftUI 中的后台删除?的主要内容,如果未能解决你的问题,请参考以下文章