2011-09-29 5 views
0

here이해하기 안드로이드 서비스

그것은 서비스가 별도의 프로세스가 아니며 스레드가 아닙니다. 그러나 "어떻게 응용 프로그램이 백그라운드에서 수행하고 싶은 무언가를 시스템에 알릴 수 있습니까?"

프로세스 나 스레드가 아닌 백그라운드에서 어떻게 처리 할 수 ​​있습니까?

답변

1

서비스는 잠재적으로 수명이 긴 Android 객체입니다. 다시 말해 Android는 서비스 객체를 인스턴스화하고 Android를 완료 할 때까지 계속 유지합니다.

서비스가 특정 작업을 수행하기 위해 백그라운드 스레드를 시작하는 것은 일반적입니다. 그들이 업무를 완료하면 안드로이드에게 서비스가 중단 될 수 있다고 말합니다. 서비스가 중지되면 Android는 onDestroy를 호출합니다. Android가 서비스가 완료되었다는 것을 알게되었으므로 나머지 애플리케이션이 실행되고 있지 않으면 Android가 메모리를 회수하기 위해 사용하는 프로세스를 파괴하기로 결정할 수 있습니다. 당신의 서비스가 돌아가고 나서부터는 이런 일을하지 않았습니다. 그것의

생각해 이런 식으로 (주는 몇 가지가 당신을 압도하지으로 탈락된다) :

  1. 안드로이드는 서비스의 인스턴스를 생성
  2. 안드로이드 서비스에 ONSTART를 호출하고 당신이 시작 스레드
  3. 실행 안드로이드로 다시 반환하고이 서비스가 여전히
  4. 당신의 전화들의 OnDestroy 당신의 배경 작업이 수행되고 일부 시간이 지남에
  5. 를 호출하지 않습니다 그래서 실행보고 서비스 또는 서비스에 topService 언 바운드입니다
  6. 안드로이드는 이제 서비스 개체를 파괴하고 수집 할 수 있습니다보고
  7. 안드로이드 서비스에들의 OnDestroy를 호출하고 실행중인 서비스
의 자체 내부 목록에서 제거
0

프로세스 또는 스레드가 아닌 백그라운드에서 어떻게 처리 할 수 ​​있습니까? 간단한

는 과정이 아니라 일부 과정의 일부입니다. 즉, 가정 활동에서 위젯을 처리하는 것과 마찬가지로 시스템의 모든 서비스를 처리하는 단일 프로세스가있을 수 있습니다.