2012-12-10 3 views
0

내 앱에 암호 해독 및 암호화 방법이 있습니다. 앱이 백그라운드로 들어가면 파일이 암호화됩니다. 앱이 포 그라운드로 들어간 경우 파일이 해독됩니다. 그게 주요 이야기 야. 두 부분 모두 약간의 시간과 많은 메모리가 필요합니다. 배경에서, 나는 그런 식으로 일을하고 있습니다. 다음하고있는 applicationWillEnterForeground, 임에서 applicationWillEnterForeground/applicationDidEnterBackground 공동 작업

encryptionTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^(void) { 
    // Wwe took too long. Stop task. 
}]; 

는 :

if (encryptionTaskId != UIBackgroundTaskInvalid) { 
    [[UIApplication sharedApplication] endBackgroundTask:encryptionTaskId]; 
} 

그게 잘 작동 생각합니다. 하지만 내 문제는 내 파일의 암호를 해독하는 동안 applicationWillEnterForeground이 실행되는 동안 누군가가 home 버튼을 클릭 할 때 발생합니다. 다시 applicationDidEnterBackground이 시작되었지만 암호 해독이 완료되지 않았습니다. 이를 처리하는 가장 좋은 방법은 무엇입니까? 포 그라운드가 끝날 때까지 기다릴 수도 있습니까?

답변

0

파일이 현재 액세스 중이거나 암호화/해독 중임을 감지 할 수 있습니까? 그렇다면 이전 메서드가 중지 된 후 몇 초 후에 다시 암호화/암호 해독을 수행 할 타이머를 만듭니다.

UPDATE :

당신이 beginBackgroundTaskWithExpirationHandler:을 사용할 수 있어야 http://developer.apple.com/library/ios/DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow.html#//apple_ref/doc/uid/TP40007072-CH4-SW28를 참조하십시오. 앱이 백그라운드로 이동하기 전에 처리를 마칠 여분의 시간을 벌어 줄 것입니다.

업데이트 2 :

encryptionTaskId 확인은 applicationDidEnterForeground에서

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    encryptionTaskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{ 
     [[UIApplication sharedApplication] endBackgroundTask:bgTask]; 
     encryptionTaskId = UIBackgroundTaskInvalid; 
    }]; 

    [[UIApplication sharedApplication] endBackgroundTask:bgTask]; 
    encryptionTaskId = UIBackgroundTaskInvalid; 
} 

그런 변수 인스턴스는 여전히 작동하고 encryptionTaskId 있는지 확인하기를 원할 것입니다 그래서 디코딩에 곧 다시 시도 타이머를 만들 경우 그것.

+0

아마도 그럴 수 있지만 최선의 방법이 아닌 것 같습니다. 나는 전체 프로세스를 이해하지 못한다. 사용자가 applicationWillEnterForeground에서 암호 해독 중에 홈 버튼을 누르면 나의 암호 해독은 여전히 ​​끝난 것으로 보인다. 그 맞습니까? – NDY

+0

그리고 나는 또한 applicationDidEnterBackground에서 타이머를 가질 수 없다고 생각한다. – NDY

+0

@Andy 내 업데이트 된 답변보기 – Bot