调试程序执行流程的小技巧

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

  1. .....  
  2. public void onResume() {  
  3.     super.onResume();  
  4.     Log.d("Tag","onResume()");  
  5. }  
  6.   
  7. public void onStart() {  
  8.     super.onStart();  
  9.     Log.d("Tag","onStart()");  
  10. }  
  11.   
  12. public void onPause() {  
  13.     super.onPause();  
  14.     Log.d("Tag","onPause()");  
  15. }  
  16.   
  17. public void onStop() {  
  18.     super.onStop();  
  19.     Log.d("Tag","onStop()");  
  20. }  
  21.   
  22. ...  

这样每次都要输入两个参数,有没有更简便的方法呢?

我们可以通过Thread.currentThread().getStackTrace()获取当前堆栈调用信息,从堆栈信息中可以获取当前调用的java文件名,类名,方法名和代码行号。

于是,我们封装了一个工具类LogHelper。我们只需要使用这个工具类,在跟踪的位置调用LogHelper.trace()方法就可以打印当前调用方法的信息。

例子:打印Activity的生命周期方法执行流程。

LogHelper.java

  1. package com.zhuozhuo;  
  2.   
  3. import android.util.Log;  
  4.   
  5. public final class LogHelper {  
  6.     private static boolean mIsDebugMode = true;//获取堆栈信息会影响性能,发布应用时记得关闭DebugMode  
  7.     private static String mLogTag = "LogHelper";  
  8.   
  9.     private static final String CLASS_METHOD_LINE_FORMAT = "%s.%s()  Line:%d  (%s)";  
  10.   
  11.     public static void trace() {  
  12.         if (mIsDebugMode) {  
  13.             StackTraceElement traceElement = Thread.currentThread()  
  14.                     .getStackTrace()[3];//从堆栈信息中获取当前被调用的方法信息  
  15.             String logText = String.format(CLASS_METHOD_LINE_FORMAT,  
  16.                     traceElement.getClassName(), traceElement.getMethodName(),  
  17.                     traceElement.getLineNumber(), traceElement.getFileName());  
  18.             Log.d(mLogTag, logText);//打印Log  
  19.         }  
  20.     }  
  21. }  
LogHelperActivity.java
  1. package com.zhuozhuo;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.util.Log;  
  6.   
  7. public class LogHelperActivity extends Activity {  
  8.     /** Called when the activity is first created. */  
  9.       
  10.       
  11.     @Override  
  12.     public void onCreate(Bundle savedInstanceState) {  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.main);  
  15.         LogHelper.trace();  
  16.     }  
  17.       
  18.       
  19.     @Override  
  20.     public void onStart() {  
  21.         super.onStart();  
  22.         LogHelper.trace();  
  23.     }  
  24.       
  25.     @Override  
  26.     public void onResume() {  
  27.         super.onResume();  
  28.         LogHelper.trace();  
  29.     }  
  30.       
  31.     @Override  
  32.     public void onPause() {  
  33.         super.onPause();  
  34.         LogHelper.trace();  
  35.     }  
  36.       
  37.     @Override  
  38.     public void onStop() {  
  39.         super.onStop();  
  40.         LogHelper.trace();  
  41.     }  
  42.       
  43.     @Override  
  44.     public void onDestroy() {  
  45.         super.onDestroy();  
  46.         LogHelper.trace();  
  47.     }  
  48. }  

Log打印结果:

总结:

通过使用LogHelper的trace()方法,在调试的时候我们可以非常方便地打印应用的执行流程。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序开发教程 PDF是一份教你如何开发微信小程序的电子书籍。微信小程序是一种轻量级的应用程序,它们可以在微信中直接运行,与APP类似,但不需要下载和安装。微信小程序开发需要一定的前端知识和微信公众平台开发经验,学习微信小程序开发需要有一定的耐心和时间。 微信小程序开发教程PDF涵盖了从入门到进阶的内容,适合初学者和有一定经验的开发者。它包括了微信小程序的基本概念、开发工具、框架、组件库和API等内容,还涵盖了微信小程序的设计原则、权限管理、数据存储和优化技巧等。此外,它还提供了编程实例和项目案例,帮助开发者快速上手并熟练掌握微信小程序开发技能。 学习微信小程序开发有很多好处,可以帮助你开发出轻量级、高效的应用程序,提高你的编程技能和工作竞争力。如果你想成为一名优秀的微信小程序开发者,你需要不断学习和实践,掌握新的技术和工具,并建立你自己的开发风格和项目经验。 ### 回答2: 微信小程序是一种轻量级的应用程序,可以在微信客户端内部运行,并且不需要像普通应用程序一样需要下载和安装。微信小程序的用户体验良好,具有快速加载、易于发布和分享等特点,因此被广泛应用于社交媒体、电商、线下场景等领域。 想要开发微信小程序,您可以查阅微信小程序开发教程PDF,这是一份系统、详细且权威的教程资料,涵盖了微信小程序的开发流程、技术要点、开发工具、调试排错、上线发布等方面的内容,可以帮助您快速上手、快速开发微信小程序。 在学习微信小程序开发教程PDF时,您需要先了解HTML、CSS、JavaScript等相关基础知识,并掌握微信小程序开发的三个重要组成部分:WXML模板、WXSS样式和JavaScript代码。同时,您还需要掌握微信小程序开发的基本流程和工具,例如使用微信开发者工具进行开发、调试和发布微信小程序。 总的来说,学习微信小程序开发教程PDF需要一定的编程基础和实践经验,但不需要过多的技术经验,只要您有兴趣、有热情、有耐心,并且具备学习的动力,相信您一定可以掌握微信小程序的开发技能,并创造出更加有趣、实用的微信小程序作品。 ### 回答3: 微信小程序开发教程pdf是一本关于微信小程序开发的教程书。该书采用了全面系统的授课方式,通过积累自上到下、从零开始逐步实现微信小程序的开发,让读者能够更好地理解微信小程序的运行原理和开发技巧。 首先,该书对微信小程序的开发环境、工具和基本结构进行了介绍和讲解,为读者打下了坚实的基础。接着,书中详细讲解了小程序的各个组件,包括视图容器、页面渲染、数据绑定、事件处理等内容,并通过实例演示了如何在应用程序中使用这些组件。 同时,该书还介绍了微信小程序的开发规范和最佳实践,让读者能够更好地了解并掌握微信小程序的开发流程和开发技巧。另外,该书还包含了许多实例代码和详细的讲解,方便读者进行实战练习和调试。 总之,微信小程序开发教程pdf是一本系统全面、讲解详细、实例丰富的微信小程序开发教材,既适合初学者入门,也适合有一定基础的开发者提高技能。它不仅能够帮助读者掌握微信小程序开发的基础知识和技巧,还能够让读者了解到微信小程序开发市场的前景和未来趋势。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值