Swiftui 重新启动应用程序时如何使用方法?

Swiftui 重新启动应用程序时如何使用方法?,swiftui,swift5,Swiftui,Swift5,我目前正在使用SwiftUI开发一个应用程序 我想在第4个进程中重新启动应用程序时使用一种方法,如下所示: 构建并运行此项目。然后,控制台在屏幕上显示场景

我目前正在使用SwiftUI开发一个应用程序

我想在第4个进程中重新启动应用程序时使用一种方法,如下所示:

  • 构建并运行此项目。然后,控制台在屏幕上显示
    场景

  • 按下home(主页)按钮,应用程序进入后台。然后控制台显示
    scenewillresignative
    sceneDidEnterBackground

  • 双击主页按钮并删除应用程序屏幕。然后控制台显示来自调试器的
    消息:由于信号9而终止

  • 按应用程序图标并重新启动应用程序。然后控制台没有显示任何内容,我想在这里使用一个方法

  • 但我不能使用任何生命周期方法

    有办法吗


    代码如下:

    斯威夫特美术馆

    import UIKit
    import SwiftUI
    
    class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    
        var window: UIWindow?
    
    
        func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
         
            let contentView = ContentView()
    
            if let windowScene = scene as? UIWindowScene {
                let window = UIWindow(windowScene: windowScene)
                window.rootViewController = UIHostingController(rootView: contentView)
                self.window = window
                window.makeKeyAndVisible()
            }
            
            print("scene")
        }
    
        func sceneDidDisconnect(_ scene: UIScene) {
           print("sceneDidDisconnect")
        }
    
        func sceneDidBecomeActive(_ scene: UIScene) {
            print("sceneDidBecomeActive")
        }
    
        func sceneWillResignActive(_ scene: UIScene) {
           print("sceneWillResignActive")
        }
    
        func sceneWillEnterForeground(_ scene: UIScene) {
           print("sceneWillEnterForeground")
        }
    
        func sceneDidEnterBackground(_ scene: UIScene) {
           print("sceneDidEnterBackground")
        }
    
    
    }
    
    ContentView.swift

    import SwiftUI
    
    struct ContentView: View {
        var body: some View {
            VStack {
                Text("Hello, World!")
            }.onAppear(){
                print("onAppear")
            }
        }
    }
    
    struct ContentView_Previews: PreviewProvider {
        static var previews: some View {
            ContentView()
        }
    }
    

    Xcode:11.7版


    Swift:Swift 5

    好吧,一旦你终止应用程序,调试器也会与应用程序断开连接。因此,无法在控制台中获取更多消息。您必须从Xcode重新启动应用程序,以便启动带有附加调试器的新实例。当你这样做的时候,你回到了第一步

    你可以在应用程序进入后台时存储一个时间戳。然后,如果您终止应用程序并重新启动它,您可以检查
    应用程序(application:UIApplication,didFinishLaunchingWithOptions launchOptions:)
    方法中经过了多少时间

    如果最多过了x秒,您可以断定有人终止了应用程序,然后决定重新启动它。如果超过x秒或者没有存储时间戳,这意味着这只是一个常规的应用程序启动