Тег: TextLayoutCache Текст: значение кэша удалено

Во время отладки моего приложения Android в определенный момент я вижу огромное количество записей в LogCat с

Tag: TextLayoutCache Text: Cache Value 0x51b9f578 deleted, size=168 (the hexa value changes from entry to entry)

Кто-нибудь знает, что это значит? Утечка памяти? Любые идеи, как решить проблему, если это проблема? Спасибо!

Ответ 1

В сети нет окончательного ответа, поэтому я просмотрел код TextLayoutCache.cpp. Выглядит хорошо для меня. Он кэширует данные макета текста для повышения производительности, и в настоящее время размер кеша по умолчанию составляет 0,5 МБ, определенный в TextLayoutCache.h.

Итак, если вы меняете текст макета на фиксированный набор значений (< 0,5 МБ), вы не увидите сообщение журнала.

Если вы меняете текст на динамические значения, тогда в итоге кеш будет заполняться, а запись кэша LRU (наименее используемая) будет удалена, и вы увидите сообщение журнала. Это просто отладочное сообщение, а не ошибка, а не утечка. Это полезный показатель производительности, связанный с тем, как внутренние элементы Android обрабатывают наше приложение.

Обратите внимание, что TextLayoutCache не используется в версиях Android >= 5.

Ответ 2

Я столкнулся с той же проблемой, когда обновлял значения textView у обработчика с помощью runnable и

Я собрал экземпляр textViews с помощью findViewById() в переменные, а затем обновил значения textview, отправив эти собранные экземпляры.

Итак, как я заметил, мне не нужен экземпляр этого текстового поля вне моего hander, поэтому я просто использую findViewById() внутри обработчика и обновляю свои текстовые комментарии.

напишите свой findviewById() в контексте, в котором вам нужен идентификатор. (говоря о том, что внутри скобок вашей функции используется это.. в моем случае.)

Надеюсь, что это поможет...