这是以Droid方式完成的方法:
import Foundation
import SwiftUI
import UIKit
public class AppleActivity : UIViewController {
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
initialize()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
initialize()
}
override public func viewDidLoad() -> Void {
super.viewDidLoad()
onCreate()
}
override public func viewWillAppear(_ animated: Bool) -> Void {
super.viewWillAppear(animated)
onStart()
}
public func initialize(){
NotificationCenter.default.addObserver(self, selector: #selector(onStart), name: UIApplication.willEnterForegroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onResume), name: UIApplication.didBecomeActiveNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onPause), name: UIApplication.willResignActiveNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onStop), name: UIApplication.didEnterBackgroundNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(onDestroy), name: UIApplication.willTerminateNotification, object: nil)
}
deinit {
NotificationCenter.default.removeObserver(self)
}
public func onCreate() {
print("onCreate()")
}
@objc public func onStart() {
print("onStart()")
}
@objc public func onResume() {
print("onResume()")
}
@objc public func onPause() {
print("onPause()")
}
@objc public func onStop() {
print("onStop()")
}
@objc public func onDestroy() {
print("onDestroy()")
}
}
struct AppleActivityStruct : UIViewControllerRepresentable {
typealias UIViewControllerType = AppleActivity
public func makeUIViewController(context : Context) -> AppleActivity {
return AppleActivity()
}
public func updateUIViewController(_ uiViewController : AppleActivity, context : Context) {
}
}
现在你可以在任何时候触发所有的回调,没有压力+没有麻烦。
注意:由于通过NotificationCenter.default.addObserver(self, selector: #selector(onStart), name: UIApplication.willEnterForegroundNotification, object: nil)的onStart()可能在UIViewController场景第一次创建时不会被调用,所以在viewWillAppear(_ animated: Bool)中调用它。