| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android开发,使用Log打印日志,打印相同内容在Logcat中只能连续显示两次(遍历打印List中的内容,打印结果条数比List的size小)。 -> 正文阅读 |
|
[移动开发]Android开发,使用Log打印日志,打印相同内容在Logcat中只能连续显示两次(遍历打印List中的内容,打印结果条数比List的size小)。 |
这个问题也不算什么有技术含量的问题,不过我感觉还是有必要写篇博客记录,以免有人遇到和我一样的困扰,也是因为在网上搜索发现,没有多少文章说明这个如题的原因,可能是大多都没经历过这个问题,或者是感觉不值得一写。 背景:有一次在调试程序的时候,我打印List集合中的内容,但是发现打印出来的结果条数总是比List的size()方法返回值要小,重复了多少次都是一样,找了一会原因没找到,后来不了了之。 结果,没过多久,又遇到一样的情况: 这次的现象是我往集合中添加了重复的数据,然后打印发现无论重复数据添加多少,在logcat中打印的时候最多只能打印出两条,自然打印结果的总条数也比List的size方法要小,我想难道是List新加了去重的属性?但是如果去重为啥能显示两条?我尝试看了一下源码以及搜了一下, 很快推翻这个想法。 然后想,难道是Log本身加了新的特性,不能打印重复数据?然后我用System.out.print尝试打印,结果能正常打印,这就印证了我的假设,剩下就是找证据了。然后我就选择Log的一个方法点进去追sdk中的代码,结果追了几步就没法追了,因为只能看到下边截图中的情况,再往后找不到了。 最后,我只能搜索其他的文章了。结果,虽然这种文章很少,但确实已经有人写了,请参考:https://blog.csdn.net/lerous/article/details/109383985? 简单说,就是从Android O之后Log在C代码层增加了类似于缓存的机制,同样的打印内容,只显示首尾两条,中间的不显示,但是会告诉你中间有多少条一样的数据。 下边这个图就是我不断的往List中添加同样的数据,然后遍历打印后进行过滤的结果,可以看到size一直在增加,但是到了size=2之后,每次只能打印两条数据。 然后不加过滤,或者加上过滤关键字chatty以后再看: 看红框中的日志信息,在首尾两条日志中有很明显的提示"identical xxx lines",也就是完全相同的有xxx行,加上已经打印的首尾两条日志,正好和size相等,这就解释了如题的疑问,这篇文章也就到此结束了,更具体的参考上述链接。 ? ? |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 | -2025/1/31 6:31:24- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |