2010-08-25 2 views
43

저는 Android 개발에 아주 익숙합니다.Android : 서비스 대 싱글 톤을 사용해야 할 때?

단순한 싱글 톤 클래스를 사용하는 대신 Android 서비스를 만드는 것이 좋은 생각은 언제입니까?

예를 들어 인터넷에서 정보를 다운로드하는 데이터 레이어를 가져옵니다.

서비스를 사용하는 것이 너무 많은 것 같지만 때로는 Context에 액세스해야 할 수도 있으므로 앱을 디자인하는 방법에 대해 조금 확신하지 못합니다.

답변

42

사용자가 작업을 떠난 직후에 프로세스가 (싱글 톤과 함께) 강제 종료 될 수 있다면 싱글 톤을 사용하십시오. 그 후 얼마 동안 계속 실행해야하는 경우 서비스를 사용하십시오. 사용자가 메모리를 남긴 후에도 계속 실행하고 싶지만 사용자가 더 많은 메모리가 필요한 다른 곳으로 이동하고 있기 때문에가 아니라 함께있을 수 있다면 싱글 톤을 사용하십시오.

사이의 결정이 인 경우 앱의 수명주기가 종료됩니다. 이러한 목적으로 모든 서비스가 수행합니다. 플랫폼에 프로세스 관리를 수정하도록 요청하십시오. 싱글 톤에서 컨텍스트가 필요한 경우 Context.getApplicationContext()를 사용하여 프로세스의 전역 컨텍스트를 검색하면됩니다.

+5

첫 번째 단락의 마지막 문장은 다소 혼란 스럽습니다. 조금이라도 재 설명 할 수 있습니까? – chakrit

+0

나는 그것이 의미하는 것이라고 생각한다 : 사용자가 떠나고 난 후에 프로세스가 계속 실행되기를 원할 때 싱글 톤을 사용하라.하지만 메모리가 다른 곳에 더 필요하지 않은 경우에만 싱글 톤을 사용한다. – mparaz

+1

예를 들어, 정보 피드 다운로드의 경우 피드를 제공하는 인터넷 서버에서 피드를 버퍼링했기 때문에 사용자가 앱을 반환 할 때마다 따라 잡을 수 있습니다 * 또는 * 피드에서 새 항목을 처리하고 중단되지 않은 기록을 표시하는 것이 아니라 * 다음에 * 싱글 톤에서는 괜찮을 것이지만 사용자가 다른 작업을하는 동안 피드를 계속 모니터링해야하는 경우에는 서비스. 이걸 조금 더 진짜 ... 재미있는 질문으로 만들려고 노력했습니다. – Carl

관련 문제