2016-12-05 5 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 в свой набор инструментов. Используя это, закрутите с жизненным циклом для различных видов деятельности и фрагментов, чтобы увидеть, когда и где создаются утечки.

 Смежные вопросы

  • Нет связанных вопросов^_^