본문 바로가기

iOS

SwiftUI active, inavtive, background 상태

728x90
반응형
SMALL

iOS 앱의 상태를 나타내는 세 가지 상태

  1. 활성(active) 상태: 앱이 포그라운드에 있고, 사용자와 상호작용할 있는 상태입니다. 사용자가 앱을 사용하고 있을 해당 상태가 됩니다. 앱이 활성 상태에서는 사용자 입력을 받고, 화면 갱신 작업을 수행할 있습니다.
    -> 앱이 실행되고 화면 표시되고 있는 상태
  2. 비활성(inactive) 상태: 앱이 포그라운드에 있지만, 사용자와 상호작용할 없는 상태입니다. 예를 들어, 알림이나 다른 시스템 창이 나타나서 앱의 화면이 가려진 경우에 해당합니다. 비활성 상태에서는 일시적으로 앱의 작업이 중단되고, 사용자 입력을 받을 없습니다.
    -> status bar 를 내렸을 때, 홈인디케이터 버튼으로 화면을 축소시켜을 경우
  3. 백그라운드(background) 상태: 앱이 백그라운드로 들어간 상태입니다. 이는 앱이 포그라운드에서 백그라운드로 전환되거나, 다른 앱으로 전환되었을 발생합니다. 백그라운드 상태에서는 앱이 실행 중이지만, 화면에 보이지 않고 사용자와 상호작용할 없는 상태입니다. 백그라운드 상태에서는 특정 작업을 수행할 있으며, 시스템에서 제공하는 백그라운드 실행 권한을 사용하여 작업을 처리할 수도 있습니다.
    -> 화면이 내려간 상태, 화면이 꺼진 상태

 

https://developer.apple.com/documentation/dispatch/dispatchobject/1452801-suspend

 

suspend() | Apple Developer Documentation

Suspends the invocation of block objects on a dispatch object.

developer.apple.com

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