파일 다운로드 및 지속을 담당하는 싱글 톤 클래스 (Downloader)가 있다고 가정 해보십시오. 클라이언트가 다운로드를 요청하면 콜백도 제공해야합니다. 내 질문에 그 콜백 개체의 저장소에 관한.Activity-Lifecycle에 대한 오래 지속되는 참조
콜백 인터페이스를 구현 한 Activity를 여러 개의 대규모 다운로드를 요청한 경우 Downloader 클래스는 Activity에 대한 참조를 무기한 보관합니다. 다운로드가 끝나기 전에 요청한 활동이 수명주기를 거치고 파괴됩니다.
이 경우 Downloader는 리사이클러가 활동을 가비지 수집하지 못하게합니다. 요청한 다운로드가 계속됩니다. 그러나 내가하고 싶은 것은 어떻게 든 제공되는 콜백을 수집해야한다는 것을 감지하고 효과적으로 누수하고 있습니다.
이와 비슷한 디자인 패턴이 있습니까? Reference
하위 클래스 중 하나가 유용하다고 생각했습니다.
감사합니다.
구독/수신 거부는 작동하는 동안 조금 제한적입니다. 또한 필자는 동급 최고의 활동 라이프 사이클을 알지 못하는 비 활동 객체 (예 : 어댑터)에서 다운로더를 사용합니다. 이 중 하나는 내 어댑터에 대한 onPause/onResume 메서드를 구현하고 Activity에서 호출하거나 다른 해킹을 사용하도록합니다. – zienkikk
그런 다음 내 ServiceLocator가 필요합니다. 내 ServiceLocator 모든 내 singletons 정적 참조를 보유하고 있기 때문에 내 애플 리케이션에서 어디에서나에서 아무것도 해결할 수 있습니다. – Rich
ServiceLocator가이 문제를 어떻게 푸는 지 이해할 수 없을 것 같습니다. 다운로더는 여전히 콜백에 대한 참조를 보유해야합니다. – zienkikk