2012-02-16 2 views
0

메모리 부족으로 서비스의 onDestroy가 호출되면 작업자 스레드에게 작업을 끝내야한다고 말하고 시스템이 호스팅 프로세스를 죽이기 전에 종료 될 때까지 기다리십시오. 그렇다면 시스템이 얼마 동안 기다릴 수 있습니까? 작업자 스레드가 언제든지 가능한 빨리 끝낼 수 있도록해야합니까?안드로이드에서 서비스가 거의 죽을 때 쓰레드 클린업을 수행하십시오.

아니면 완전히 잘못 되었나요?


아니면 물어해야합니다

경우 작업자 스레드를 정리하는 가장 안전한 또는 가장 좋은 점은? 또는 그렇게하는 가장 안전하거나 최선의 방법은 무엇입니까? 아니면 전혀 그런 것이 없으며 언제든지 예고없이 쓰레드가 죽을 준비가되어 있어야합니다.

+0

onDestroy가 최선의 선택입니다. – Ruuhkis

답변

0

IIRC 라이프 사이클 메소드는 '응답하지 않음'메시지를 표시하기 전에 1-2 초 정도 기다릴 수 있습니다. 일반적으로 이러한 방법에서 어떤 것도 기다릴 수는 없습니다.

onDestroy은 마지막 라이프 사이클 방법이며 앱이 배경에있을 때 호출되지 않습니다. 스레드를 백그라운드에서 실행 하시겠습니까? 앱에 따라 다르지만 대개는 나쁜 행동입니다.

onPause()에서 앱이 더 이상 포착되지 않을 때 또는 더 이상 앱이 보이지 않을 때 onStop()에서 일시 중지하는 것이 좋습니다.

+0

음 ... 서비스 – BlueWanderer

+0

대문자 -S'서비스'예, 그렇다면'onDestroy()'입니다. –

+0

onDestroy는 호출 할 수 없다고합니다. 사실입니까? 그리고 그것이 사실이 아니라면, onDestroy에서 돌아 오기 전에 얼마나 오래 기다릴 수 있습니다. "오랜 시간의 IO 작업이 끝나기를 기다릴 수만 있다면, 아니면 그냥 포기해야합니까?" – BlueWanderer

관련 문제