iT邦幫忙

2024 iThome 鐵人賽

DAY 18
0
Mobile Development

自己的 app 自己寫系列 第 18

[Day18] (メ ゚皿゚)メ(゚皿゚メ)

  • 分享至 

  • xImage
  •  

先偷一張蘋果畫的圖來鎮樓。

生命週期
出處:apple developer doc

iOS 中的生命週期包含多個階段,像是 active, inactive, background, suspended 等等,這些階段標示了 app 在系統中的變化,因此可以在不同時間點去處理不同事件。傳統 UIKit 是用 AppDelegate 和 SceneDelegate 來監控,底下有 applicationDidBecomeActive, applicationDidEnterBackground 等方法,而 SwiftUI 比較不一樣,會在 @main 當中使用 @Environment(.scenePhase) 來處理,使用起來像是:

@main
struct TheApp: App {
    @Environment(\.scenePhase) var scenePhase
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        .onChange(of: scenePhase) { newPhase in
            switch newPhase {
            case .active:
                // ...
            case .inactive:
                // ...
            case .background:
                // ...
            default:
                break
            }
        }
    }
}

通過對不同生命週期的處理,可以去優化 app 的效能。而不動 framework 有時候也有自己的生命週期,這就需要更進一步的研究了。


上一篇
[Day17] 如果颱風假要 WFH 那平常可以也 WFH 嗎
下一篇
[Day19] 要不要從 Arc 搬回 Safari
系列文
自己的 app 自己寫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言