android:分享 一个非常强大的LOG开关---Log.isLoggable

1、API亮点:

此API能够实现不更换APK。在出问题的手机上就直接能抓到有效log,能提升不少工作效率。

2、API介绍

近期在解决短信问题时。看到一个非常强大的LOG开关---Log.isLoggable

1. if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) {

2.     Log.v(TAG, "Creating TransactionService");

3. }

进入framework中查看isLoggable方法的定义,发现这是一个用了JNI的方法。只是方法声明上有非常多凝视。

细致看了下,发现这是android给大家的一个礼物。

原文大致意思:检查当前的tag是否在指定的log级别。

一般默认的log级别是INFO,这也就意味着在这之上包含INFO的log都会被输出。你能够通过设置系统属性改动默认的log级别,运行例如以下命令就可以:

1. setprop log.tag.;YOUR_LOG_TAG> ;LEVEL

你也开能够将这句代码写进local.prop文件中面,而且将这个文件放到/data/local.prop。依据上面的指导。试着运行下以下的命令:

1. adb shell setprop log.tag.Mms:transaction VERBOSE

接着发了一条彩信试验。有效log都输出来了。

我们在这个基础上在进行一些挖掘。看看google还给我们留了哪些惊喜。从上面第二段代码中的LogTag.TRANSACTION,能够看到Mms的包里面有个LogTag.java文件,发现里面果然声明了不少常量:

1. public static final String TRANSACTION = "Mms:transaction";

2. public static final String APP = "Mms:app";

3. public static final String THREAD_CACHE = "Mms:threadcache";

4. public static final String THUMBNAIL_CACHE = "Mms:thumbnailcache";

5. public static final String PDU_CACHE = "Mms:pducache";

6. public static final String WIDGET = "Mms:widget";

7. public static final String CONTACT = "Mms:contact";

这一个个都是彩信里面重要log开关。知道了这些以后调试彩信就方便多了,不用换APK,在出问题的手机上就直接能抓到有效log。能提升不少工作效率。我们接着载回去看看isLoggable(Stringtag,
int level)在哪里有调用,发现除了framework层和Mms应用。还有Contacts等重要模块有调用,以后调试这些模块都会方便非常多。

时间: 2025-01-18 07:26:56

android:分享 一个非常强大的LOG开关---Log.isLoggable的相关文章

android:分享 一个很强大的LOG开关---Log.isLoggable

1.API亮点: 此API可以实现不更换APK,在出问题的手机上就直接能抓到有效log,能提升不少工作效率. 2.API介绍 最近在解决短信问题时,看到一个很强大的LOG开关---Log.isLoggable 1. if (Log.isLoggable(LogTag.TRANSACTION, Log.VERBOSE)) { 2.     Log.v(TAG, "Creating TransactionService"); 3. } 进入framework中查看isLoggable方法的

android 分享一个处理BaseAdapter,getView()多次加载的方法

一:BaseAdapter介绍 BaseAdapter是listview,gridview等列表,使用的数据适配器,它的主要用途是将一组数据传到ListView.Spinner.Gallery及GridView等UI显示组件,如果listView列表的数据项过多,如1000项,我们如果把这1000项全部放到界面中去,软件直接内存溢出了,BaseAdapter刚才可以帮我们解决这个问题,BaseAdapter工作原理图如下: 从上图中看出,如果我们有1000个数据项,实际显示的只有7项,其它的缓存

Android 分享一个流量显示界面

版本:1.0 日期:2014.8.9 2014.9.24 版权:© 2014 kince 转载注明出处 波形效果有几种不同的呈现形式,比如从中间向四周散开的波形,也就是熟知的水涟漪:还有上下波动的曲线,像五线谱等.英文中可以称作Wave或者Ripple,所以暂且叫它们WaveView.WaveLayout.RippleView.RippleLayout,接下来开始实现这些效果. 首先看一下Solo 火爆足球动态壁纸, 下面中间的按钮就是一个波形按钮,它会不断地向四周辐射,由于是静态图,如果想体验

Android 分享一个SharedPreferences的工具类,方便保存数据

我们平常保存一些数据,都会用到SharedPreferences,他是保存在手机里面的,具体路径是data/data/你的包名/shared_prefs/保存的文件名.xml, SharedPreferences的使用也很简单,我自己就写了一个SharedPreferences的工具类,然后就保存在这里,等自己以后需要保存数据直接从这里copy代码,哈哈 工具类如下 [java] view plaincopy package com.example.shortcut; import androi

Android 分享一个简单有趣的动画效果

本期开始于大家分享几个简单又有趣的动画 效果图: 效果还是不错的,而实现起来也并没有多大的难度,上代码喽 public int id[] = { R.drawable.fengjing_1, R.drawable.fengjing_2, R.drawable.fengjing_3, R.drawable.fengjing_4, R.drawable.fengjing_5, R.drawable.fengjing_6 }; public String list[] = { "一", &q

分享一个强大的采集类,还可以模拟php多进程

做采集的时候,可以使用file_get_contents()去获取网页源代码,但是使用file_get_contents采集,速度慢,而且超时时间,不好控制.如果采集的页面不存在,需要等待的时间很长.一般来说,curl的速度最快,其次是socket,最后是file_get_contents.现在跟大家分享一个很强大的采集类,会根据你的服务器当前的配置,自动选择最快的方式.已经封装了curl和socket,file_get_contents 用法很简单:1,采用get方法请求Http::doGet

分享一个jquery功能强大的提示信息插件代码

代码属于提示文字特效,很好,使用有些复杂,请参demo使用 下载地址:jquery功能强大的提示信息插件代码 预览DEMO:DEMO 分享一个jquery功能强大的提示信息插件代码,布布扣,bubuko.com

分享一个Android和java调用RESTful Web服务的利器Resting

分享一个Android和java调用RESTful Web服务的利器Resting 当我们调用Web服务,往往是最终目标是取HTTP响应,将其转化为将在应用中呈现的值对象.Resting可以用来实现这一功能.Resting,在Java的一个轻量级的REST框架,可用于调用一个RESTful Web服务,并转换成响应来自客户端应用程序定制的Java对象.由于它的简单,resting是适合Android等手持设备. resting目标?暴露简单的get(),post(),put()和delete()

分享一个Android版 仿QQ局域网即时通信软件(可发文件、语音、录音)

一.支持的功能有文字信息交互.语音聊天.发送文件和录音 源码会在后面附上. 二.UI展示图 三.经过我的测试,是非常成功的.只是有一点不足就是语音实时通话的时候声音会回声甚至死机. 文件传送和文字,录音都比较成功. 四.本软件是用Java编码,在安卓平台上的应用.使用了UDP协议和TCP协议. 大家可以学习这两部分的代码. 里面注释还是比较多. 五.当然我只是个学生,这个只是学生版本,仅供大家学习借鉴之用.绝对不能用于商业拿去直接卖,或者改改就上架某市场. 六.宣传下本人的小制作: 单机斗地主-