2011-09-22 5 views
2

그래서 원래는 서비스와 TimerTask를 사용하여 일정한 간격으로 어플리케이션에 보낼 필요가있는 인 텐트를 보내고있었습니다. http://developer.android.com/resources/articles/timed-ui-updates.html에서 기사를 읽은 후 더 나은 접근 방법이 될 것으로 보입니다. 이제, 내 서비스는 핸들러를 생성하고 그것을 처리합니다. 이 기사에서와 같이, Handler postDelayed() 자체는 무기한으로 효율적으로 실행된다 (위젯이 제거 될 때까지 처리기를 지우고 실행을 종료한다).서비스와 핸들러의 관계

내 문제는, 사용자가 필요로하는 경우 서비스가 메모리를 위해 Android에서 먹을 수 있다는 것입니다. 내 처리기는 내 서비스의 멤버 변수입니다. 예를 들어 안드로이드가 내 서비스를 먹은 다음 나중에 다시 시작한다고 해봅시다. 내가 이해하는 한, 이것은 내 서비스의 새로운 인스턴스이며, 따라서 새로운 Handler가 인스턴스화되어 그 길로 보내질 것입니다. 이제 두 개의 핸들러가 실행 중입니까? 아니면 오래된 처리기가 가비지 수집 (나는 그것을 다른 곳에서 참조해야하기 때문에 내가 생각하는 줄 알았는데 여전히 활성화되어있다)? 아니면 첫 번째 처리기가 어떻게 든 자동으로 종료됩니까? 나는이 중 8 개가 동시에 실행되기를 원하지 않는다.

답변

1

처리기는 스레드의 일부이고 스레드는 프로세스의 일부입니다. OS가 Serivce를 죽이면 전체 프로세스가 제거됩니다.