2010-07-15 5 views
0

응용 프로그램을 백그라운드로 이동 한 다음 다시 포 그라운드로 가져 오면 작동 표시기가 멈추는 문제가 있습니다. 응용 프로그램은 백그라운드로 이동할 때 네트워크를 통해 일부 데이터를로드 할 수 있습니다. 따라서 사용자에게 활동 표시기를 표시합니다. 작업이 백그라운드에서 완료되도록 코드를 추가했습니다. 응용 프로그램을 즉시 포 그라운드로 가져오고 데이터가 완전히로드되지 않은 경우 스피너는 화면에 남아 있지만 회전을 멈 춥니 다. 데이터가 완전히로드되면 스피너가 사라집니다.응용 프로그램이 포 그라운드로 이동할 때 UIActivityIndicatorview가 멈 춥니 다. iOS4

활동 표시기가 고정되어 있으며 가능한 해결책이 될 수있는 이유에 대한 아이디어.

감사합니다.

답변

5

배경에있는 앱이 UI를 업데이트 할 이유가 거의 없습니다.

하나는 누구입니까? 표시기가 정지되는 또 다른 이유는 불필요하게 장치의 배터리가 소모되고 포 그라운드 앱이 느려지는 UI 업데이트와 애니메이션을 백그라운드로 중단한다는 것입니다.

Apple의 우수한 iPhone Application Programming Guide에서 응용 프로그램이 포 그라운드로 들어올 때마다 이라는 응용 프로그램 대리 메서드 메서드가 호출됩니다.

위젯을 활성화하기 위해이 메소드를 재정의하고 로직을 추가 할 수 있습니다. 또는 클래스를 구독 (컨트롤러보기 등)하여 UIApplicationWillEnterForegroundNotification 알림을 청취 할 수 있습니다. 이 알림을 수신하는 경우 해당 시간에 응용 프로그램이 수행중인 모든 UI 상태를 업데이트하는 선택기를 호출 할 수 있습니다.

+0

감사합니다. Alex. 또 하나의 질문 - 응용 프로그램이 포 그라운드로 오면, 가져온 데이터로 테이블 뷰를 업데이트하고 활동 표시기를 숨 깁니다. 따라서 UI를 깨우면 왜 액티비티 표시기 애니메이션이 활성화되지 않습니까? 백그라운드에서 멈 추면 전경에서 회전을 다시 시작하면 안됩니까? –

+0

OS가 앱을 백그라운드로 시작할 때 정지 한 애니메이션을 OS가 추적하지 못해 UI 업데이트를 중지하려고합니다. 포 그라운드로 들어갈 때 UI의 상태를 업데이트하는 것은 사용자의 책임입니다. '-viewDidAppear :'에 논리가있을 수 있기 때문에 테이블 뷰가 갱신 될 수 있습니다. 테이블 뷰를 트리거하여 데이터를 다시로드합니다. –

+0

액티비티 표시기에서 startAnimating을 호출하여 applicationWillEnterForeground에서 회 전자를 다시 애니메이션으로 만들려고합니다. 그러나 그것은 아무것도하지 않습니다. isAnimating 값을 확인하면 TRUE로 표시됩니다. 그러나 회 전자는 여전히 동결 상태입니다. –

관련 문제