android 调试

介绍:在开发的过程中我们经常需要调试程序的执行路径,如我们想知道一个Activity的生命周期方法的调用顺序,我们可能会写如下代码:

..... 
public void onResume() 
{     
	super.onResume();     
	Log.d("Tag","onResume()"); 
}  
public void onStart() {     
	super.onStart();     
	Log.d("Tag","onStart()"); 
}  
public void onPause() {    
	 super.onPause();     
	 Log.d("Tag","onPause()"); 
 }  
 public void onStop() {     
	 super.onStop();     
	 Log.d("Tag","onStop()"); 
 }  
 ...
这样每次都要输入两个参数,有没有更简便的方法呢?
我们可以通过Thread.currentThread().getStackTrace()获取当前堆栈调用信息,
从堆栈信息中可以获取当前调用的java文件名,类名,方法名和代码行号。
于是,我们封装了一个工具类LogHelper。
我们只需要使用这个工具类,在跟踪的位置调用LogHelper.trace()方法就可以打印当前调用方法的信息。
例子:打印Activity的生命周期方法执行流程。

LogHelper.javapackage com.zhuozhuo;  
import android.util.Log;  
public final class LogHelper 
{ 	
	private static boolean mIsDebugMode = true;
	//获取堆栈信息会影响性能,发布应用时记得关闭DebugMode 	
	private static String mLogTag = "LogHelper";  	
	private static final String CLASS_METHOD_LINE_FORMAT = "%s.%s()  Line:%d  (%s)";  	
	public static void trace() 
	{ 		
		if (mIsDebugMode) { 			
			StackTraceElement traceElement = Thread.currentThread().getStackTrace()[3];//从堆栈信息中获取当前被调用的方法信息 
			String logText = String.format(CLASS_METHOD_LINE_FORMAT, traceElement.getClassName(), traceElement.getMethodName(), 
			traceElement.getLineNumber(), traceElement.getFileName()); 
			Log.d(mLogTag, logText);//打印Log 
		} 	
	} 
} 

LogHelperActivity.javapackage com.zhuozhuo;  
import android.app.Activity; 
import android.os.Bundle; 
import android.util.Log; 

public class LogHelperActivity extends Activity {    
  /** Called when the activity is first created. */ 	 	   
  @Override     
  public void onCreate(Bundle savedInstanceState) 
  {        
	super.onCreate(savedInstanceState);        
    setContentView(R.layout.main);       
    LogHelper.trace();     
  }             
  @Override     
  public void onStart() {     
	super.onStart();    
 	LogHelper.trace();     
  }          
  @Override     
  public void onResume() {     	
    super.onResume();     	
	LogHelper.trace();     
  }     
  @Override     
  public void onPause(){     	
    super.onPause();     	
	LogHelper.trace();     
  }          
  @Override     
  public void onStop() {     	
    super.onStop();     	
	LogHelper.trace();     
  }          
  @Override     
  public void onDestroy() {     	
    super.onDestroy();     	
	LogHelper.trace();     
  } 
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值