728x90
반응형
SMALL
iOS 앱의 상태를 나타내는 세 가지 상태
- 활성(active) 상태: 앱이 포그라운드에 있고, 사용자와 상호작용할 수 있는 상태입니다. 사용자가 앱을 사용하고 있을 때 해당 상태가 됩니다. 앱이 활성 상태에서는 사용자 입력을 받고, 화면 갱신 및 작업을 수행할 수 있습니다.
-> 앱이 실행되고 화면 표시되고 있는 상태 - 비활성(inactive) 상태: 앱이 포그라운드에 있지만, 사용자와 상호작용할 수 없는 상태입니다. 예를 들어, 알림이나 다른 시스템 창이 나타나서 앱의 화면이 가려진 경우에 해당합니다. 비활성 상태에서는 일시적으로 앱의 작업이 중단되고, 사용자 입력을 받을 수 없습니다.
-> status bar 를 내렸을 때, 홈인디케이터 버튼으로 화면을 축소시켜을 경우 - 백그라운드(background) 상태: 앱이 백그라운드로 들어간 상태입니다. 이는 앱이 포그라운드에서 백그라운드로 전환되거나, 다른 앱으로 전환되었을 때 발생합니다. 백그라운드 상태에서는 앱이 실행 중이지만, 화면에 보이지 않고 사용자와 상호작용할 수 없는 상태입니다. 백그라운드 상태에서는 특정 작업을 수행할 수 있으며, 시스템에서 제공하는 백그라운드 실행 권한을 사용하여 작업을 처리할 수도 있습니다.
-> 화면이 내려간 상태, 화면이 꺼진 상태
https://developer.apple.com/documentation/dispatch/dispatchobject/1452801-suspend
suspend != background
서스펜디드상태는 앱이일시중단되어비활성화된상태이며, 아무런 작업을 수행하지 않습니다.
백그라운드 상태는 앱이 일부 작업을 처리하고 특정 이벤트에 응답할 수 있는 상태입니다.
import SwiftUI
struct ContentView: View {
@Environment(\.scenePhase) var scenePhase
@State private var text: String = "Hello"
var body: some View {
Text(text)
.padding()
.onChange(of: scenePhase) { newPhase in
if newPhase == .active {
print("active")
self.text = "active"
} else if newPhase == .inactive {
print("inactive")
// self.text = "inactive"
} else if newPhase == .background {
print("Background")
self.text = "Background"
}
}
}
}
728x90
반응형
LIST
'iOS' 카테고리의 다른 글
Global DispatchQueue, QoS (0) | 2023.05.30 |
---|---|
UIKit 화면 상태 (0) | 2023.05.18 |
SwiftUI 이미지 캐시처리 (0) | 2023.05.11 |
UIKit 화면 전환 방법과 예제 (0) | 2023.05.09 |
WWDC22 Challenge: Learn Switch Control through gaming (0) | 2023.05.07 |