programing

iOS 애플리케이션이 백그라운드로 이동하면 긴 작업이 일시 중지됩니까?

mailnote 2023. 8. 14. 23:01
반응형

iOS 애플리케이션이 백그라운드로 이동하면 긴 작업이 일시 중지됩니까?

예, 다른 앱으로 전환하는 것과 같은 사용자의 멀티태스킹 작업에 내 앱이 반응하기를 원한다면 처리해야 한다는 것을 알고 있습니다.

- (void)applicationWillResignActive:(UIApplication *)application
- (void)applicationDidBecomeActive:(UIApplication *)application

앱이 큰 파일을 다운로드하는 것과 같이 꽤 오랜 시간이 걸리는 작업을 수행하는 경우 사용자가 앱을 백그라운드로 입력하도록 하면 어떻게 됩니까?사용자가 내 앱에 돌아오면 해당 작업이 자동으로 중단되었다가 다시 시작됩니까?

앱이 백그라운드로 들어가거나 포그라운드에서 다시 시작되면 정확히 어떤 일이 발생합니까?

사용자가 내 앱을 백그라운드로 이동하도록 허용할 때 내 앱의 실행이 방법의 중간에 있다면 어떻게 됩니까?

예를 들어, 내 앱은

for (int i = 1 to 10000K) {
    do some calculation;
}

i== 500K일 때 사용자는 다른 앱으로 전환합니다.내 앱의 for-loop은 어떻게 됩니까?

설명서에서 다음을 참조하십시오.

에서 applicationDidEnterBackground(_:) 하고 돌아오는데 약.이 방법을 구현하면 작업을 수행하고 돌아오는 데 약 5초가 걸립니다.시간이 다 되기 전에 메소드가 반환되지 않으면 앱이 종료되고 메모리에서 제거됩니다.

작업을 하는 데 합니다.beginBackgroundTask(expirationHandler:) .ㅠㅠbeginBackgroundTask(expirationHandler:)하는 데 에 해당 전에 할 수 시스템에서 요청을 처리하는 데 시간이 필요하므로 해당 작업 어설션이 허용되기 전에 시스템이 앱을 일시 중단할 수 있습니다.를 들어예를들어, 전지하않음라고 부르지 .beginBackgroundTask(expirationHandler:)의 맨 applicationDidEnterBackground(_:)방법을 선택하고 앱이 계속 실행될 것으로 예상합니다.

위에서 설명한 장시간 실행 작업이 메인 스레드에 있고 응용 프로그램이 백그라운드로 이동한 후 완료되는 데 5초 이상 걸릴 경우 응용 프로그램이 삭제됩니다.메인 스레드가 차단되어 에서 돌아올 기회가 없습니다.-applicationDidEnterBackground:이윽고.

스레드에서 이 오래 경우)된 것으로 .-applicationDidEnterBackground:( 답변의 논의에 따라).응용 프로그램이 다시 시작되면 다시 시작됩니다.

그러나 후자의 경우 백그라운드로 이동하는 동안 정리하여 백그라운드에 있는 동안 언제든지 응용 프로그램이 종료될 수 있도록 대비해야 합니다.

시간이 소요될 수 있는 작업을 수행하고 있지만 종료를 원하지 않는 경우 UIBackground Task i에서 실행하여 작업 시간을 연장할 수 있습니다.

{
    UIBackgroundTaskIdentifier  taskId = 0;
    taskId = [application beginBackgroundTaskWithExpirationHandler:^{
        taskId = UIBackgroundTaskInvalid;
    }];

// Execute long process. This process will have 10 mins even if your app goes in background mode.

}

"handler"라고 하는 블록 인수는 백그라운드 작업이 만료될 때(10분) 발생합니다.다음은 설명서에 대한 링크입니다.

위에서 언급한 것처럼 앱이 백그라운드에서 실행되고 애플이 사용자가 수행하는 작업에 따라 허용하거나 거부할 수 있는 몇 가지 경우가 있습니다.

https://developer.apple.com/library/ios/documentation/iphone/conceptual/iphoneosprogrammingguide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html

더 중요한 것은 이러한 범주 중 하나에 해당하는 경우 앱 새로 고침 빈도가 해당 장치의 앱 사용량을 다른 앱과 비교하여 고려하는 애플 알고리즘에 의해 결정된다는 것입니다.앱을 더 자주 사용하면 더 많은 백그라운드 시간이 할당됩니다.이것은 하나의 변수일 뿐이지만 백그라운드 시간 할당은 앱마다 달라지며 사용자가 제어할 수 없습니다.

언급URL : https://stackoverflow.com/questions/6650717/when-an-ios-application-goes-to-the-background-are-lengthy-tasks-paused

반응형