`
caiwb1990
  • 浏览: 307332 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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的生命周期方法执行流程。

package cn.caiwb;

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
		}
	}
}



package cn.caiwb;

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();
    }
}



总结:

通过使用LogHelper的trace()方法,在调试的时候我们可以非常方便地打印应用的执行流程
1
2
分享到:
评论

相关推荐

    Android开发技巧与性能优化

    本期简介 《GOOGLE ANDROID 开发入门与实战》简介 ...6. ANDROID 调试 LOGCAT 技巧 7. 用 ANDROID 运行最简单的C 程序 8. 开发技巧杂集 8.1 一些源于 CSS 的组合实现技巧 8.2 关于 SEARCH 搜索框的使用 . . . ......

    《Android 手机程序设计实用教程》

    《Android手机程序设计入门应用到精通》中的内容除了教导初学者如何使用Android窗口组件开发手机程序之外,也分享了重要的程序调试经验与技巧,对于初学者是非常重要的。对于程序如何配合窗口组件一起使用、如何在...

    Android Studio断点调试详解

    众所周知,断点调试是一个合格程序员必备的一种技能,断点调试可以帮助我们查看程序运行期间每一步各变量的值,学会调试可以帮我们节省很多排查问题的时间,下面我们将来介绍一下Android Studio调试的方法和技巧。...

    《Android手机程序设计入门、应用到精通》 PDF

    《Android手机程序设计入门应用到精通》中的内容除了教导初学者如何使用Android窗口组件开发手机程序之外,也分享了重要的程序调试经验与技巧,对于初学者是非常重要的。对于程序如何配合窗口组件一起使用、如何在...

    Android程序开发范例宝典

    资源名称:Android程序开发范例宝典内容简介:本书紧密围绕开发人员在开发过程中遇到的实际问题和开发中应该掌握的技术,全面介绍了应用Android进行程序开发的各方面技术和技巧。全书分为15章,内容包括Android...

    Eclipse_Debug_调试技巧入门_Eclipse_Debug_调试技巧入门_

    Eclipse 调试器; Debug 视图;调试 Java 语言程序;远程调试;Eclipse快捷键调试

    Android 实用开发技巧集.rar

    2.5 调试android 工程. 19 3. 在Market发布Android 应用程序........ 21 3.1 apk文件的组成结构 ................ 21 3.2 制作keystore签名文件 ........... 21 3.3 生成签名的apk文件 ............... 23 ...

    Android程序开发范例宝典.z01

    《Android程序开发范例宝典》紧密围绕开发人员在开发过程中遇到的实际问题和开发中应该掌握的技术,全面介绍了应用Android进行程序开发的各方面技术和技巧。全书分为15章,内容包括Android模拟器应用、界面布局及...

    Android程序开发范例宝典.zip

    《Android程序开发范例宝典》紧密围绕开发人员在开发过程中遇到的实际问题和开发中应该掌握的技术,全面介绍了应用Android进行程序开发的各方面技术和技巧。全书分为15章,内容包括Android模拟器应用、界面布局及...

    Android程序开发范例宝典.z02

    《Android程序开发范例宝典》紧密围绕开发人员在开发过程中遇到的实际问题和开发中应该掌握的技术,全面介绍了应用Android进行程序开发的各方面技术和技巧。全书分为15章,内容包括Android模拟器应用、界面布局及...

    Android移动应用开发(第3版)卷Ⅰ基础篇 (Shane Conder, Lauren Darcey) PDF扫描版

    B.3.1 向Android应用程序关联调试器  B.3.2 终止Android进程  B.3.3 监视Android应用程序的线程活动  B.3.4 监视堆活动  B.3.5 触发垃圾回收(GC)  B.3.6 创建和使用HPROF文件  B.4 使用内存分配...

    简单实用的Android studio 调试技巧

    说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原来可以玩的这么牛。下面我分别一一做介绍。 条件断点(Conditional ...

    Android 4.X手机/平板电脑程序设计入门、应用到精通_源代

    《Android 4.X手机/平板电脑程序设计入门、应用到精通(第2版)》9大特色: 丰富的Eclipse开发环境操作技巧,帮助初学者快速学会Eclipse的强大功能以及程序调试技术,同时讲解了很多程序编辑辅助功能,可大大提升...

    Android简明应用程序开发[原创]

    1.2.2 Android调试技巧 34 1.2.3 向模拟器中传输和安装APK文件 35 三、小结 36 第三章 Android基础与布局 39 一、Android基础 39 二、RelativeLayout布局 44 三、LinearLayout布局 53 四、...

    Android底层开发技术实战详解--内核、移植和驱动.(电子工业.王振丽).part1

    2.3.4 实践演练——演示编译Android程序的两种方法 43 2.4 编译Android kernel 47 2.4.1 获取goldfish内核代码 47 2.4.2 获取msm内核代码 50 2.4.3 获取omap内核代码 50 2.4.4 编译Android...

    Android开发中一个简单实用的调试应用技巧分享

    主要跟大家分享了一个简单实用的Android调试应用技巧,文中介绍的非常详细,相信对大家具有一定的参考学习价值,需要的朋友下面来一起看看吧。

    android开发期末大作业.zip

    3.掌握Android手机应用设计的方法与技巧。 三、实验内容及要求 1、设计内容 题目、设计内容自拟,工作量适中,要求学生应用课程所学知识,采用JAVA语言和Android手机应用开发技术实现一个完整的系统。 ①完成大作业...

    android开发资料大全

    android程序编写及调试新手入门 大家一起学Android(Windows篇) android入门与提高必看指南 Android入门逆引手册 Android开发指南中文版、创意设计 【Android系统原理与开发要点详解】/底层 应用 框架 Android核心...

    android精品源码

    Android内存泄露调试.pdf android写的google map api 应用.zip Android实现GPS定位.pdf Android应用框架原理与程序设计36技.pdf Android摄像头的应用.pdf 还有很多的例子,见下面的传送门,因为等级问题,一个包...

    android开发入门与实战(下)

    第6章 磨刀不误砍柴工——Android应用程序结构介绍 6.1 Android体系结构介绍 6.1.1 应用程序(Application) 6.1.2 应用程序框架(ApplicationFramework) 6.1.3 库(Libraries)和运行环境(RunTime) 6.2 Android应用程序...

Global site tag (gtag.js) - Google Analytics