2011-09-15 2 views
4

OS가 (낮은 메모리 또는 저전력으로 인해) adroid 서비스가 종료되었을 때. 살해되기 전에 서비스에 통보합니까? onDestroy() 콜백이 호출 되나요?안드로이드에 의해 종료되기 전에 바운드 서비스 상태 저장

우리의 주요 관심사는 살해되기 전에 서비스 상태를 저장하는 능력입니다. 리소스를 사용할 수있게되면 시스템에서 서비스를 다시 시작할 수 있지만 서비스가 종료되기 전에 서비스 상태를 저장하는 권장 방법은 무엇입니까?

첨부 된 서비스의 강제 닫기 프로세스에 대한 이해를위한 시퀀스 다이어그램이 첨부되어 있으며, 여기에는 우리가 원하는 것이 포함됩니다.

+0

저는 시스템이 앱을 죽일 때 onDestroy() 호출을받을 것이라고 생각합니다 (확실하지는 않습니다). 하지만 응용 프로그램이 종료되고 콜백 (즉, 작업 킬러로 인해 사용자가 죽임)이 발생하지 않을 수도 있음을 알고 있어야합니다. 따라서 시스템에서 심각한 문제가 발생하지 않도록하고 싶을 것입니다. – FoamyGuy

답변

1

서비스가 종료되기 전에 알림을 받습니까? onDestroy() 콜백이 호출 되나요?

가능합니다. 그것은 보장되지 않습니다.

우리의 주요 관심사는 살해되기 전에 서비스 상태를 저장하는 것입니다.

서비스의 상태가 RAM에만 표시되어야합니다. 상태가 변경되면 상태를 유지해야합니다 (예 : 데이터베이스 사용).

+1

onDestroy()는 Activity와 마찬가지로 메모리가 없어지면 호출되지 않습니다. – hackbod

+3

모든 상태 변경 사항을 플래시로 유지해야한다는 것은 받아 들일 수 없습니다. 배터리 사용량을 크게 늘리고 플래시 수명을 단축해야하기 때문입니다. – Michael

0

API 레벨 14 (ICS) 이후부터 사용자가 서비스를 제거하고 시스템이 that it is a good time for a process to trim unneeded memory from its process을 결정하면 android os가 서비스에 통지합니다. 다음은 link입니다.

관련 문제