2011-01-17 4 views
2

4.2. 내 앱이 종료되면 (배경에 전송 된 후) 즉시 사용자가 다시 시작하면 문제가 발생합니다. 백그라운드 작업 스레드가 여전히 실행 중임을 확인했습니다. 다음 이것은 foreground 스레드로 돌아가는 중 초기화 작업을 취소합니다.전경으로 돌아갈 때 백그라운드 작업 취소 중 sdk를 사용하여

어떻게 처리해야합니까? 전경으로 돌아갈 때 백그라운드 작업 스레드를 완전히 취소 할 수있는 방법이 있습니까?

감사

+0

@ Tech24 - 백그라운드 모드에서 일부 작업을 수행하기 위해 GCD를 사용하여 다른 스레드를 만들고 있습니까? 더 나은 방법 : 백그라운드에서 실행하는 작업을 수행하는 방식은 무엇입니까? – Trinca

답변

0

난 당신이 당신이 백그라운드 프로세스를 실행하고있는 장치를 알리기 위해 다음과 같은 것을 사용하고 있으리라 믿고있어 :

_myTaskID = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:myHandler]; 

당신은이를 수행해야 당신의 배경 작업이 정상적으로 완료 또는 myHandler가있는 작업을 취소 할 때 : you'r는 가정, 이제

[[UIApplication sharedApplication] endBackgroundTask:_myTaskID]; 
_myTaskID = UIBackgroundTaskInvalid; 

당신의 UIApplic에서 응용 프로그램을 다시 초기화 ationDelegate의 applicationWillEnterForeground : 또는 UIApplicationWillEnterForegroundNotification에 대한 응답으로 _myTaskID가 UIBackgroundTaskInvalid로 설정되어 있는지 확인하여 백그라운드 작업이 아직 실행 중인지 확인해야합니다.

백그라운드 작업에서 어떤 작업을 수행했는지 지정하지 않았지만 작업이 아직 실행 중일 때 응용 프로그램이 포 그라운드로 돌아 가면 해당 작업을 완료 할 수 있도록 응용 프로그램을 준비해야합니다. 그렇지 않으면 백그라운드 작업을 전혀 고려하지 않아도됩니다.

+0

고마워, 네, 정말로 내가 그 일을하는 방식입니다. 그래서 나는 그 일이 끝날 때까지 기다릴 필요가 있다고 가정합니다. – tech74