在某些时候调试我的 Android 应用程序时,我在 LogCat 中看到大量条目,其中
Tag: TextLayoutCache Text: Cache Value 0x51b9f578 deleted, size=168 (the hexa value changes from entry to entry)
有谁知道这是怎么回事?内存泄漏?如果有问题,有什么想法可以解决吗?谢谢!
在某些时候调试我的 Android 应用程序时,我在 LogCat 中看到大量条目,其中
Tag: TextLayoutCache Text: Cache Value 0x51b9f578 deleted, size=168 (the hexa value changes from entry to entry)
有谁知道这是怎么回事?内存泄漏?如果有问题,有什么想法可以解决吗?谢谢!
网上似乎没有明确的答案,所以我查看了TextLayoutCache.cpp的代码。在我看来很好。它缓存文本布局数据以提高性能,目前在TextLayoutCache.h中定义了 0.5MB 的固定默认缓存大小。
因此,如果您将布局文本更改为一组固定值 (<0.5MB),您将不会看到日志消息。
如果您将文本更改为动态值,那么最终缓存将填满并删除 LRU(最近最少使用)缓存条目,您将看到日志消息。这只是一条调试消息,不是错误,也不是泄漏。这是关于 Android 内部如何处理我们的应用程序的有用性能指标。
请注意,Android 版本 >= 5 中不使用 TextLayoutCache。
当我使用 runnable & 从处理程序更新我的 textView 值时遇到了同样的问题
我通过 findViewById() 将 textViews 的实例收集到变量中,然后通过引用这些收集的实例来更新 textview 的值。
因此,正如我所观察到的,我不需要处理程序之外的那个 textview 的实例,所以我只是在处理程序内部使用 findViewById() 并更新了我的 textviews。
在您需要 id 的上下文中编写您的 findviewById()。(在我的情况下,谈论使用它的函数的括号内。)
希望这可以帮助...