2013-05-22 5 views
3

백그라운드 스레드에서 UI를 업데이트하는 것과 관련하여 많은 질문이 있습니다. 이 질문은 약간 다릅니다. 저는 앱이 실제로 백그라운드에있을 때 어떻게 UI를 업데이트 할 수 있는지 궁금합니다. 다음은 내 문제입니다.iOS - 백그라운드에서 UI 업데이트

MapKit과 Google의 매핑 SDK를 모두 시도했습니다. 나는 구글을 선호한다. (관리가 훨씬 간단하고 간결하며, MapKit은 상당한 양의 상용구 코드를 포함한다. iOS 6의 MapKit 메모리 사용량은 이다.). 그러나 예를 들어, 사용자 경로를 기록하고, 흔적이있는 오버레이/폴리 라인을 생성하는 경우 앱이 백그라운드로 이동하면 앱이 백그라운드로 돌아갈 때 상당한 지연 또는 고정 기간이되는 경우가 종종 있습니다. 전경. 앱이 백그라운드로 이동하면 화면의 폴리선이 더 이상 업데이트되지 않는 것처럼 보이고 앱이 전경으로 돌아올 때 '따라 잡아야'합니다. 때로는 시간이 걸릴 수 있습니다. 앱이 너무 오랜 시간이 걸리기 때문에 가끔 충돌이 발생했습니다.

제 질문은 : 앱이 백그라운드에 있어도 UI를 업데이트하도록 강제 할 수있어서 앱을 다시 시작할 때이 '따라 잡기'기간을 없앨 수 있습니까?

불분명 한 코드 나 설명을 추가 할 수 있습니다. 감사!

답변

2

백그라운드에서 UI를 업데이트 할 수 없으며 업데이트하지 않아야합니다. 가장 좋은 방법은 백그라운드 데이터 기록에 임계 값을 설정하는 것입니다. 임계 값 내에서 포어 그라운드로 들어갈 때 UI를 "따라 잡습니다". 임계 값을 벗어나면 전경을 입력 할 때 UI가 재설정됩니다. 임계 값을 초과하면 데이터가 리셋 (전체 히스토리가 아님)에 충분하도록 유지되어야합니다. 사전 임계 값, 그것을 모두 유지하십시오.

앱 흐름 :

if (appForegroundBeforeTooMuchData) { 
     //Update Overlay 
} else { 
     //We have too much data to update the overlay smoothly, store the data and start a *new session* on foreground 
     //Behave as if user just started the app 
} 
:

  1. 앱 출시
  2. 앱의 배경을 수집하고 오버레이에 데이터를 표시
  3. 데이터

그런 onForeground를 계속 수집

+0

임계 값을 넘었 으면 UI를 '재설정'한다는 의미는 이해하지 못합니다. –

+0

다음과 같이 재설정하면 사용자가 새로 시작한 화면을 방금 열어 본 것처럼 UI가 작동합니다. –

+0

일단이 임계 값을 통과하면 오버레이를 표시하지 않습니까? 데이터를 어떻게 표시합니까? –