2011-03-16 2 views
0

나는 내 자신의 Application 클래스를 만들었습니다.Application.onLowMemory()가 호출되지 않았습니다.

디버깅을 시도하고 코드가 Application.onCreate()에서 멈추지 만 onLowMemory에서 멈추지 않습니다.

시나리오를 테스트하기 위해 많은 다른 높은 메모리 응용 프로그램을 엽니 다.

내가 보는 것은 디버그 세션이 (Eclipse에서) 종료되었고 일부 정적 변수가 null로 바뀌 었다는 것입니다. 프로세스가 종료되었음을 나타냅니다.

디버그가 메소드의 중단 점에서 멈추지 않았을뿐만 아니라 Log.e (...) 행을 넣었고 잘 보지 못했습니다.

왜 메소드가 호출되지 않았는지에 대한 아이디어가 있습니까?

감사합니다.

답변

3

이 메서드가 호출 될 것이라는 보장이 없다고 생각합니다. docs에서

: 사망이 이 정의되지 않은 호출됩니다되는 정확한 지점, 는 일반적으로는 시기에 일어날 동안

모든 백그라운드 프로세스가되었습니다 , 즉 도달하기 전에이다 서비스와 전경 UI 인 을 사용하는 살인 프로세스는 살인을 피하려고합니다.

호출 지점이 정의되지 않았으므로 절대로 호출하지 않을 수 있습니다.

일반적으로 안드로이드는 배경에있는 한 언제든지 응용 프로그램을 무료로 종료 할 수 있습니다. OnPause, onStop, onDestroy와 같은 라이프 사이클의 메소드에만 의존해야합니다.이 메서드는 필요한 정리를 수행하기 위해 호출 할 수 있도록 명시되어 있습니다.

+1

감사합니다. Mayra. 파괴되는 응용 프로그램의 콜백을 얻는 또 다른 방법을 알고 있습니까? 현재, 각 액티비티 (상속 사용)에 대해 정적 변수가 null인지 확인하여 앱의 상태를 확인합니다. –

+1

나는 응용 프로그램이 파괴되었을 때 확실히 알 수있는 방법이 있다고 생각하지 않습니다. 당신은 개별 활동이 파괴되었음을 알 수 있습니다. 그러나 onCreate가 응용 프로그램에서 호출 된 경우 과거의 특정 시점에서 onCreate가 삭제되었다는 것을 알고 있으므로 다시로드해야하는 작업을 수행 할 수 있습니다. –

관련 문제