2012-05-21 1 views
1

주 스레드에서 일부 작업을 수행하는 간단한 응용 프로그램을 만들고 있습니다. NSLog에 프로세스를 인쇄하고 있으므로 프로세스가 실행 중임을 이해할 수 있습니다.applicationDidEnterBackground 및 applicationWillResignActive가 호출되지 않습니다.

은 지금이 과정을 시작하지 않고 홈 버튼을 누르면 응용 프로그램이 백그라운드에서 입력 및 방법 applicationDidEnterBackground & applicationWillResignActive 모두가 내 전화되고있다 (I이 버튼을 누를 때 프로세스 일 시작됩니다).

하지만 처음 버튼을 누르면 메인 버튼을 누르면 메인 버튼이 눌러지기 시작합니다. 홈 버튼을 누르면이 두 메소드가 호출되지 않습니다. 그래서 내 응용 프로그램은 백그라운드에서 입력 된 그 애플 리케이션을 알 수 없습니다.

그 후에도 다시 앱을 활성화하면 상태 표시 줄 만있는 검은 색 화면이 표시됩니다.

  1. 왜 이런 일이 발생하고 있습니까?
  2. 앱이 백그라운드로 들어가는 이유는 무엇입니까?
  3. 사과의 메소드가 호출되지 않는 이유는 무엇입니까?
  4. 해결 방법이 있습니까?

UPDATE 여기에 모든 방법이 전혀 구현이없는 내 AppDelegate에 클래스 코드

- (void)applicationWillResignActive:(UIApplication *)application 
{ 

} 

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
} 

- (void)applicationWillEnterForeground:(UIApplication *)application 
{ 

} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 

} 

입니다.

미리 감사드립니다.

+0

프로젝트에 대리인 클래스 코드를 게시 할 수 있습니까? – Dinesh

+0

프로세스는 어떻게 생겼습니까? – borrrden

+0

항상 코드를 넣으려고합니까 ??? –

답변

3

주 스레드에서 일부 작업을 수행하는 간단한 응용 프로그램을 만들고 있습니다.

주 스레드에서 장기 실행 작업을 수행하지 마십시오.

위임 콜백은 주 스레드에서 발생합니다. 주 스레드가 사용 중이면 "실행 루프"로 돌아갈 때까지 콜백이 발생하지 않습니다.

앱을 포착 할 때 OS는 실제로 사용 가능한 경우 스크린 샷을 표시하고 시작 이미지 (Default.png)로 돌아갑니다. 스크린 샷은 -applicationDidEnterBackground: 후 반환됩니다. 저장된 내용을 사용자 정의 할 수 있습니다. 보안상의 이유로이 작업을 수행하거나 카운트 다운 타이머와 같이 다시 시작할 때 표시되지 않는 UI 요소를 숨길 수 있습니다.

검은 화면은 앱에 실행 이미지가 없기 때문일 수 있습니다. 앱이 백그라운드로 들어가는 데 약 10 초 이상 걸리는 경우 (메인 스레드가 차단되어 있기 때문에) 화면이 사라집니다. 디버거가 달려 있고 SIGKILL이 잡히는 것을 제외하면 Xcode를 보지 않는 한 놓치기 쉽습니다.

2

어떤 경우 사용자가 홈 버튼을 칠 때 앱의 Info.plist에 true로 설정 UIApplicationExitsOnSuspend 키의 applicationWillResignActive 메서드가 호출되지 않은 경우

있다. 그리고 다른 일을 할 수도 있습니다. 여기에 열쇠를 확인 Apple keys 그리고 plist에 추가 된 새로운 것이 있는지보십시오. 대리자 메서드가 호출하지 않는다고 말하는 다른 경우는 없습니다. 적절한 행동으로 인해 프로젝트로 인해 시간이 걸릴 수도 있습니다. 프로젝트를 정리하고 다시 작성하십시오.

0

이상하게 들릴 것 같지만 도움이됩니다. 나는 똑같은 문제를 안고 프로젝트를 청소하고 다시 작업하기 시작했다.