2014-12-21 4 views
1

로컬 sqlite 데이터를 업데이트하는 백그라운드 가져 오기가 있습니다.전경에있는 앱에서 ios 백그라운드 가져 오기가 실행 중인지 확인합니다.

응용 프로그램도 포 그라운드에서 실행중인 경우 부분적으로 채워진 SQL 행을로드하려고 시도하는 UI를 중지하기 위해 백그라운드 가져 오기가 실행 중인지를 감지 할 수 있어야합니다.

백그라운드 가져 오기가 실행 중인지 어떻게 알 수 있습니까?

또한 데이터를 볼 수 없다는 것을 사용자에게 알리는 것보다 나은 UI 패턴이 있습니까?

당신은 세 가지 옵션

UIApplicationStateActive 
UIApplicationStateInactive 
UIApplicationStateBackground 

당신이 그것을 UI 스레드의 여부를 확인해야하는 경우가 있습니다

[UIApplication sharedApplication].applicationState 

응용 프로그램의 상태를 확인할 수 있습니다

+0

아마 당신은 앱의 대리자에서 변수를 조작하여 배경 가져 오기의 시작과 끝을 나타낼 수 있습니다 ... 도움이 더 필요하면 배경 가져 오기 코드를 게시하십시오. –

답변

0

if ([NSThread isMainThread]) 
{ 
    // main thread 
} 
+0

좋아, 그럼 내가 배경 가져 오기 코드를 넣는 것이 좋습니다. 그러면 앱이 '데이터 표시'화면에 있는지 확인하기 위해 추가 검사가 필요합니다. 백그라운드 가져 오기가 UI 스레드에서 실행 중임을 감지하는 방법이 있습니까? – DEzra

+0

@DEzra 배경 가져 오기 작업이 백그라운드가 아닌 다른 상태에서 실행될 수 있다고 생각하지는 않았지만 그럴 경우 해당 코드는 앱의 상태를 알려줍니다. 또한 코드가 실행중인 스레드를 나타내는 방법을 보여주기 위해 내 대답을 업데이트했습니다. – SomeGuy

+0

업데이트 해 주셔서 감사합니다. 확실하지 않습니다. 하지만 시뮬레이터가 시뮬레이터를 허용하기 때문에 백그라운드 스레드가 다른 스레드에서 실행되고있는 동안 백그라운드 스레드가 가져 오기를 실행할 수 있음을 알고 있습니다. – DEzra

0

에게 그것을 시도 다른 관리 객체 컨텍스트 fr을 사용하여 백그라운드 가져 오기를 수행해야하는 것 같습니다. om UI 관리 객체 컨텍스트

데이터가 일관되고 표시가 가능할 때 배경 컨텍스트를 저장하고 didSaveContextNotification을 사용하여 변경 사항을 UI 컨텍스트에 병합하고 디스플레이를 업데이트합니다.

배경 가져 오기는 UI 로직에 대해 알 필요가 없습니다. UI 논리는 병합으로 인해 데이터가 변경된 후에 업데이트해야한다는 것을 알고 있어야합니다.