Будет ли использование Asynctask в другом классе или фрагменте без заголовка вызывать утечку памяти? - PullRequest
0 голосов
/ 25 мая 2019

Я читал, что использование asynctask в качестве внутреннего класса действия приведет к утечкам памяти, потому что это не позволит деятельности собирать мусор, а также из-за неявных ссылок.Произойдут ли те же утечки памяти, если мы использовали разные подходы, такие как: -

  • Использование AsyncTask в отдельном классе?
  • Или если мы использовали AsyncTask с фрагментом без заголовка (используя его setRetainInstance(true) метод, позволяющий избежать его уничтожения).

Я реализовал подход безголовых фрагментов, и он прекрасно работает, поскольку асинктивный объект создается только один раз и контролируется фрагментом без заголовка, но я не могу понять,если утечка памяти из-за проблемы с активностью исчезла или если она все еще существует.

1 Ответ

1 голос
/ 25 мая 2019

Прежде всего, вы можете использовать библиотеку как LeakCanary или узнать, как использовать профилировщик Android для поиска утечек. Учтите, что не каждый эксперт согласен с тем, что мелкие утечки должны быть исправлены, некоторые из них действительно маленькие и не вызовут больших проблем.

подход без фрагментов должен быть хорошим. Чтобы ответить на ваш первый вопрос, учтите, что вы можете сделать static внутренним классом, как указано здесь , где также объясняется, как сделать слабую ссылку, которая будет легко собираться мусором

...