programing

applicationWillEnterForeground vs. applicationDidBecomeActive, applicationWillResignActive vs.applicationDidEnterBackground

stoneblock 2023. 4. 19. 21:52

applicationWillEnterForeground vs. applicationDidBecomeActive, applicationWillResignActive vs.applicationDidEnterBackground

애플리케이션이 백그라운드에서 기동하고 있을 때, 액티브하게 하기 위해서 애플리케이션을 준비할 때에 실장하는 적절한 대리자는 어느 것입니까.

applicationWillEnterForground vs applicationDidBecomeActive -- 차이점은 무엇입니까?

애플리케이션을 sleep 상태로 만들고 정리 및 데이터 저장을 준비하기 위해 구현해야 하는 적절한 위임자는 무엇입니까?

applicationWillResignActive와 applicationDidEnterBackground의 차이점은 무엇입니까?

또한 applicationWillResignActive는 착신 SMS 또는 콜이 들어왔을 때 호출되지만 사용자가 [OK]를 클릭하여 계속 진행합니다.이 경우 앱이 아무런 조치를 취하지 않았으면 합니다.사용자가 앱을 종료하지 않았기 때문에 중간 청소 없이 계속 실행했으면 합니다.따라서 applicationDidEnterBackground에서만 청소 작업을 수행하는 것이 더 합리적이라고 생각합니다.

SMS/콜로 인해 중단되는 이벤트와 관련하여 어떤 딜러가 기상 및 취침에 대해 구현해야 하는지 선택하는 데 도움이 되는 모범 사례에 대해 의견을 주시면 감사하겠습니다.

감사해요.

기동시에(스프링보드, 앱 전환, URL 중 하나를 통해) 앱을 재기동할 때 호출됩니다.백그라운드에서 실행 후 앱을 사용할 준비가 되었을 때 한 번만 실행되며, 실행 후 여러 번 호출할 수 있습니다.이것에 의해, 재기동 후에 1회만 실행할 필요가 있는 셋업에 최적입니다.

applicationWillEnterForeground:고고부부부부다다

  • 앱 재기동 시
  • 전에

applicationDidBecomeActive:고고부부부부다다

  • application:didFinishLaunchingWithOptions:
  • 처리할 URL이 없는 경우 이후.
  • 후에application:handleOpenURL:출됩니니다다
  • 사용자가 전화 또는 SMS와 같은 인터럽트를 무시한 경우.

applicationWillResignActive:고고부부부부다다

  • ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    • 사용자가 콜을 받는 경우 호출됩니다.
    • 사용자가 무시하면 콜이 호출됩니다.
  • 홈 버튼을 누르거나 사용자가 앱을 전환할 때.
  • 의사가 말하길
    • 진행 중인 태스크 일시 중지
    • 타이머를 무효화
    • 경기를 일시 중지하다
    • OpenGL 프레임 레이트 감소

applicationDidEnterBackground:고고부부부부다다

  • 다음에
  • 문서
    • 공유 자원의 해방
    • 사용자 데이터 저장
    • 타이머를 무효화하다
    • 앱 상태를 저장하여 앱이 종료된 경우 복원할 수 있습니다.
    • UI 업데이트 사용 안 함
  • 5초 안에 필요한 작업을 수행하고 메서드를 반환합니다.
    • 최대 5초 이내에 돌아오지 않으면 앱은 종료됩니다.
    • 을 더 .beginBackgroundTaskWithExpirationHandler:

공식 문서입니다.

앱의 라이프 사이클 관리는 질문에 도움이 됩니다.간단한 개념에 대해서는 해당 문서에서 그림을 참조하십시오.XCode Wizard에 의해 생성된 코드에서 코멘트를 읽을 수도 있습니다.리스트는 다음과 같습니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Override point for customization after application launch.
    return YES;
}

- (void)applicationWillResignActive:(UIApplication *)application
{
    /*
     Sent when the application is about to move from active to inactive state. 
     This can occur for certain types of temporary interruptions (such as an 
     incoming phone call or SMS message) or when the user quits the application 
     and it begins the transition to the background state.
     Use this method to pause ongoing tasks, disable timers, and throttle down 
     OpenGL ES frame rates. Games should use this method to pause the game.
     */
}

- (void)applicationDidEnterBackground:(UIApplication *)application
{
    /*
     Use this method to release shared resources, save user data, invalidate 
     timers, and store enough application state information to restore your 
     application to its current state in case it is terminated later. 
     If your application supports background execution, this method is called 
     instead of applicationWillTerminate: when the user quits.
     */
}

- (void)applicationWillEnterForeground:(UIApplication *)application
{
    /*
     Called as part of the transition from the background to the active state; 
     here you can undo many of the changes made on entering the background.
     */
}

- (void)applicationDidBecomeActive:(UIApplication *)application
{
    /*
     Restart any tasks that were paused (or not yet started) while the 
     application was inactive. If the application was previously in the 
     background, optionally refresh the user interface.
     */
}

- (void)applicationWillTerminate:(UIApplication *)application
{
    /*
     Called when the application is about to terminate.
     Save data if appropriate.
     See also applicationDidEnterBackground:.
     */
}

자세한 내용은 UIApplicationDelegate 공식 문서를 참조하십시오.

저는 아직 Dano의 답변에 조금 혼란스러웠기 때문에 참고용으로 특정 시나리오의 이벤트 흐름을 파악하기 위해 약간의 테스트를 했습니다만, 당신에게도 도움이 될지도 모릅니다. that that that that that that that that that를 사용하지 입니다.UIApplicationExitsOnSuspendinfo.info.plist에 .iOS 8 + iOS 7 기 i i i i i i i i i i i i i i i i i i i i i i i i i i ios 。카마린그들은 매우 비슷하다.

  • 비실행 상태에서의 초기 기동 및 이후의 모든 기동:

기동 완료

OnActivated(활성화 시)

  • 중단(전화 통화, 상단 슬라이드 다운, 하단 슬라이드 업):
  • 홈 버튼을 두 번 눌러 비활성 앱을 나열한 다음 앱을 다시 선택합니다.

OnResignActivation(온리시그네이션)


OnActivated(활성화 시)

  • 홈 버튼을 두 번 눌러 비활성 앱을 나열하고 다른 앱을 선택한 다음 앱을 다시 시작합니다.
  • 홈 버튼을 한 번 눌렀다가 다시 시작합니다.
  • 잠금(ON/OFF 버튼) 후 잠금 해제:

OnResignActivation(온리시그네이션)

DidEnter배경


WillEnterForground

OnActivated(활성화 시)

  • 홈 버튼을 두 번 누르고 앱 종료: (이후 재기동이 첫 번째 경우)

OnResignActivation(온리시그네이션)

DidEnter배경

Did Enter Background (iOS 7만 해당)

ㅇㅇ.DidEnterBackgroundiOS7을 사용합니다.UIApplication 백그라운드iOS 8 시시시그그그 。iOS 8 i i 。제 답변을 입수하면 업데이트 하겠습니다.을 사용하다

applicationWillEnterForeground라고 부릅니다.

앱 재기동 시(배경에서 포그라운드로)이 메서드는 앱을 처음 시작할 때(예: 다음 시간) 호출되지 않습니다.applicationDidFinishLaunch호출되지만 배경에서 온 경우에만 호출됩니다.applicationDidBecomeActive

applicationDidBecomeActive라고 불리고 있다

앱이 처음 시작된 후didFinishLaunching끝나고applicationWillEnterForeground처리할 URL이 없는 경우 다음 시간 후.application:handleOpenURL:라고 합니다.applicationWillResignActive사용자가 전화나 SMS 등의 인터럽트를 무시한 경우(어플리케이션에서 alertView가 사라진 후)

applicationWillResignActive는 시스템이 권한을 요구할 때 호출됩니다.(iOS 10에서는).혹시나 누군가 나와 같은 문제에 부딪힐까 봐...

iOS 8+에서는 전화를 받을 때 미묘하지만 중요한 차이가 있습니다.

iOS 7에서는 사용자가 전화를 받으면 applicationWillResignActive: 와 applicationDidEnterBackground: 가 모두 호출됩니다.그러나 iOS 8+에서는 applicationWillResignActive:만 호출됩니다.

iOS 13+의 경우 다음 방법이 실행됩니다.

- (void)sceneWillEnterForeground:(UIScene *)scene
- (void)sceneDidBecomeActive:(UIScene *)scene

언급URL : https://stackoverflow.com/questions/3712979/applicationwillenterforeground-vs-applicationdidbecomeactive-applicationwillre