Каков срок жизни Drawable, вызванного из ресурсов?

Борюсь с переполнением памяти в программе и озадачился таким вопросом: внутри каждого BitmapDrawable есть класс BitmapState, который и хранит собственно саму картинку. Если у нас в Layout указана ссылка на drawable, то есть подозрение, что этот Drawable и его BitmapState будут жить с момента создания Activity (или с момента отображения Layout) до уничтожения Activity. Т.е. если мы покажем единожды диалог с какой-то картинкой, то эта картинка будет в памяти вплоть до уничтожения Activity (или может даже Application?).

Есть ли у кого наблюдения на эту тему, полезные ссылки, мысли?
  • Вопрос задан
  • 2705 просмотров
Пригласить эксперта
Ответы на вопрос 1
Nomad1
@Nomad1 Автор вопроса
Сам и отвечу: в классе Resources хранится SparseArray<WeakReference<Drawable.ConstantState> > mDrawableCache
В идеальном мире это бы означало, что картинки хранят до тех пор, пока не закончится память. В реальности же WeakReference в Android уничтожает объект сразу же, как заканчиваются на него ссылки, потому в правильном раскладе, когда удаляется Layout, его уничтожение приведет к уничтожению Drawable, а значит и количество ссылок на ConstantState упадет до нуля и картинка будет очищена.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 сент. 2021, в 23:33
200000 руб./за проект
28 сент. 2021, в 22:42
50000 руб./за проект
28 сент. 2021, в 22:34
500 руб./за проект