2012-05-29 1 views
1

나는 활발한 은하계를 가지고 있습니다. 오래 전에 ICS ROM을 설치했습니다. 2.2에서 사용하던 비디오 캡처 프로그램이 비디오 캡처 중 알림없이 갑자기 종료된다는 것을 알았습니다. 나는 ICS가 많은 메모리를 사용한다는 것을 배우기 위해 계속했다.내 안드로이드 서비스 onDestroy 메서드가 호출되지 않습니다. 낮은 숫양 때문일 수 있습니까?

저는 서비스 인 텐트를 통해 객체의 배열을 만드는 응용 프로그램을 만들고 있습니다. 이 서비스는 끈적 거리는 서비스입니다. 그래서, 제 이해를 위해 가능한 한 오랫동안 붙어 있습니다. 내 onDestroy 메서드에서 내 배열을 파일로 직렬화하므로 내 서비스가 다시 시작될 때 배열이로드됩니다 (파일이있는 경우). 그래서 나는 내 애플 리케이션을 테스트하고, 모든 것이 잘 돌아 간다. 그런 다음, 작업을 종료한다 (의도는 여전히 백그라운드에서 실행되어야한다). 그런 다음 ICS 인터넷 브라우저를 실행하고 응용 프로그램에서 Force Close를 가져옵니다.

내 시스템이 내 서비스를 죽이고 ondestroy가 호출되지 않을 수도 있습니까?

답변

-1

programm가 닫힐 때, onDestroy()를 호출 할 yourActivity.finish()를 호출해야합니다.

Android 시스템에서 응용 프로그램을 마치면 onDestroy가 항상 호출되는 것은 아닙니다.

+1

내 질문은 서비스가 아니라 활동에 관한 것입니다. – 8oh8

0

서비스의 경우와 마찬가지로 서비스가 종료 될 때 onDestroy 메서드가 호출됩니다. 안드로이드는 을 시작하거나 바인딩 된 클라이언트가 더 이상 없을 때 서비스를 종료합니다. 활동과 마찬가지로 메모리가 부족 해지면 Android가 서비스를 종료 할 수 있습니다. 그렇게되면, 안드로이드는 메모리 압력이 통과 할 때 서비스 를 다시 시작하려고합니다, 그래서 서비스가 다시 시작 지속적인 정보 를 저장해야하는 경우, 그것은 ONSTART 방법으로 그렇게하는 것이 가장 좋습니다.

Could it be because of low ram? 

내가 이전에 말했듯이.

소스 : OReilly.Android.Application.Development

+0

서비스는 어떻게됩니까? – 8oh8

+0

의 활동 및 서비스는 동일하게 작동합니다. 당신이 그것에 대해 의심의 여지가있는 경우 – Akram

+0

는 응용 프로그램이 낮은 memory.http로 인해 시스템이나하지에 의해 살해되고 있는지 여부를 확인하려면이 onLowMemory 방법을 사용하십시오 //developer.android.com/reference/android/app/Service.html#를 onLowMemory % 28 % 29 – Akram

관련 문제