Тег: 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() в контексте, в котором вам нужен идентификатор. (говоря о том, что внутри скобок вашей функции используется это.. в моем случае.)
Надеюсь, что это поможет...