LOG优化管理

        不知道大家平常有没有这样的问题:我们在一些关键点打了一些log,作为开发的角度这个有助于以后定位问题,但是这些log在平常的时候是会消耗性能的,并且有时候测试或者性能方便会提出冗余log的问题,这就出现了一个问题这些log去掉还是不去掉?

            比如我想要下方循环中打log


一般我们的做法就是上图这样的,直接打了,实际上每一行的log都是要耗资源性能的,所以我们外发的版本已经要尽量减少log的打印。

这里给大家两种种处理log的方式

【一】 使用广播的方式

        首先我们创建一个LogUtils的类,给log加一个开关,如下所示:


这个时候我们在调用log的时候就是这样使用了:


这个时候肯定有读者问了,我的开关一直是false的,怎么打印啊,当然这个时候是不会打印的。

怎么办呢.....

很简单我们使用广播动态改变这个开关就好了,如下代码 创建一个广播监听两个action,如下图:



这样的话我们的动态控制log的开关就算完成了,来测试一下:

命令行发送广播:adb shell am broadcast -a "com.test.log.switch.open"

然后再点击发现log已经有了


然后命令行发送广播:adb shell am broadcast -a "com.test.log.switch.close"

点击就没有任何log打出了。。。。。。。

【二】 利用系统SystemProperties属性

首先我们改造我们的LogUtils类:

如上图,我们打印log的开关是读取系统的SystemProperties的属性,

        private static final StringLOG_ENABLE_PROP ="ro.test.log";

这个使我们自己设置的,名字是自定义的(但是建议去看一下SystemProperties的命名规则,这里不做讲解,不同命名效果不同的)。

这样我们只需要用命令行  adb shell setprop ro.test.log true  就可以把log的开关打开了(最好使用adb shell getprop ro.test.log查一下有没有写进去,有时候会写不进去,如果是空白,插拔再执行一遍写入命令)。

杀掉我们的进程(APP),再次进入就会有log打印了(开关已经打开了)。

这两种方式各有利弊,广播的话更加灵活,更加方便,随时关闭,但是应用每次重启都需要发广播之后才生效

SystemProperties的话写入一次一直生效,直到手机重启才会清理SystemProperties而失效。



小伙伴们还有更好的方式吗?欢迎留言讨论。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android开发中我们有时候需要借助一些命令帮助更好的高效率定位解决问题,本文就来介绍一些可能有些隐藏的而却非常...
    passiontim阅读 1,846评论 0 4
  • 最近看到一些关于adb的相关知识,总结一下,这些常用的命令以后可以直接拿来用~ adb其实就是Android De...
    Mr_冯先生阅读 4,534评论 0 10
  • 文/肖筱兮 我害怕人潮密集,我害怕山川小溪,我害怕我在附近,却找不到你。 夏天还没到来,可以已经热得让你人难以接受...
    肖筱兮阅读 515评论 2 5
  • 没有锅可怎么煮熟这些食物呢,悠悠有点灰心了。这时候小爱过来在悠悠腿上蹭了蹭说,悠悠,岛上有好多竹子呀。悠悠听完,仔...
    加油金子阅读 302评论 0 0
  • 余曰:“唐以诗取士,而诗之宗匠必推李、杜,卿爱宗何人?” 芸发议曰:“杜诗锤炼精纯,李诗潇洒落拓。与其学杜之森严,...
    Sunny飞镜阅读 196评论 0 0

友情链接更多精彩内容