2016-12-05 6 views
1

최근 내가 현재 Android 기기, https://medium.com/google-developer-experts/weakreference-in-android-dd1e66b9be9d약한 참조를 사용하여 메모리 누출을 피하는 가장 좋은 방법은 무엇입니까?

에 약한 참조를 피하기에 대해 이야기 블로그를 건너 왔어요, 내가 작업하고있는 프로젝트는 MVP 아키텍처를 다음 우리는 다양한 콜백 발표자에 (청취자) 약한 참조를 사용 events.However , 약한 참조를 사용하는 대신 대체 방법을 찾고 있습니다. 아마 내 응용 프로그램 아키텍처를 설계하여 이러한 메모리 누수 문제를 피할 수있는 더 좋은 방법입니다.

현재 사용하고있는 접근 방식은 즉 표현 자의 다양한 수신기에 약한 참조를 사용하는 것입니다. 그렇다면 어떻게하면이 문제를 훨씬 더 나은 방법으로 해결할 수 있습니까? .?

+0

이 기사를보십시오 https://medium.com/@m_mirhoseini/yet-another-mvp-article-part-1-lets-get-to-know-the-project-d3fd553b3e21#.6y9ze7e55 또한 이 샘플 MVP 프로젝트 http://github.com/mmirhoseini/marvel 도움이 될 수 있습니다 ... –

+1

감사합니다. 정말 도움이되었습니다. – Sammer

답변

1

내가 사용하고있는 현재 접근 방식 즉, 발표자의 다양한 수신기에 약한 참조를 사용하면 유해한가?

아마도. 코드베이스를 파고 들지 않고 구체적으로 말하기는 어렵습니다. 그렇다면 WeakReferences를 사용하는 일반적인 단점을 고려해야합니다. 나는 분명히 만드는 또 다른 StackOverflow answer 당신을 가리키는 것이다 : 하나의 문제가 해결되지 WeakReference를를 사용

("나는하지 않도록 명심해야 어딘가에 추가 된 리스너를 제거하는 것을 잊지"), 또한 상승 또 다른 - "내 청취자가 더 이상 아무 것도 언급하지 않을 때 청취자가 듣는 것을 기억해야합니다." 당신은 문제를 해결하지 못한다. 어떤 식 으로든 당신은 청취자의 수명을 명확하게 정의하고 설계하고 추적해야합니다. 나는 훨씬 더 나은 방법으로이 문제를 해결할 수있는 방법을


so..than합니다.?

WeakReferences를 천천히 시작합니다. 그들을 제거하십시오. Android에서 제공하는 라이프 사이클 이벤트를 활용하여 올바른 시간에 분리하여 첨부하십시오. 마지막으로 도구 상자에 LeakCanary을 추가하십시오. 이를 사용하여 다양한 활동 및 파편의 수명주기를 둘러보고 누출이 언제 어디서 생성되는지 확인하십시오.