我是一个老派的开发者(好吧,我只有20岁,不算老派,只是喜欢打印出来看而不是使用逐步调试器:P),我在Android应用程序中有很多Log.i()调用。我想知道这是否会对应用程序的性能产生影响?
我知道我应该使用逐步调试器,只是调试多个线程可能有点麻烦。
谢谢你的帮助!
我认为日志不会影响应用程序的性能,因为在发布应用程序时,您可以通过在Android清单中设置debuggable
来关闭它:
<application android:icon="@drawable/icon"
android:label="@string/app_name"
android:debuggable="false">
我自己正在研究Android编程,但从目前看来,我认为Android日志记录遭受了大多数Java日志框架所遭受的问题(值得注意的例外是SLF4J),即:
开发人员通常通过添加保护块来处理这个问题
if (log.isDebugEnabled()) {
log.debug("...");
}
顺便说一下,SFL4J不需要保护块,因为它使用类似于C的方法调用,延迟字符串组合直到实际需要。不幸的是,Android似乎没有走这条路。iOS也没有这个问题,因为它有一个预编译器。这是我经常希望Java保留的东西。
无论如何,我不建议删除日志记录以支持调试器。在我看来,它们有两个不同的目的。如果正确地完成,我发现日志记录非常有用,可以理解应用程序的流程。我经常通过查看日志找到问题,而在调试器中找不到。例如,在多个类(特别是UI类)中执行不必要的代码、不导致实际错误的奇怪数据问题等。在这些情况下,使用调试器就像用勺子铺混凝土。另一方面,调试器非常适合分析由日志记录突出显示的问题的细节。
因此,在我的代码中,我倾向于有相当数量的日志记录,旨在以类似英语的方式告诉我应用程序正在做什么,这样我可以轻松阅读并理解正在发生的事情。但是我非常严格地保持最低级别的水平。也就是说,除非是您想在发布模式下查看的内容,否则不要在信息级别记录日志。我发现许多开发人员往往会打破这一点。如果您切换到Log.d,则可以调试应用程序,并在构建发布版本时,不会编译或执行任何这些调用。
答案是肯定的和否定的。
这取决于您有多少个Log调用,而且由于您谈论的是步进式调试,我猜想您现在不担心发布代码(当然会删除过多的日志记录)。
我曾经使用过过多的日志记录来追踪我的调试代码中特别难以捉摸的问题,直到我找到问题后才删除了该日志记录。
简而言之,在开发中尽可能多地记录日志,但不要让用户遭受其影响。