Code Fragment-简单的打印时间的操作

Android中用于检测时间相关的工具有TrackView很是强大,自己也写了一个简单的打印时间的类,可以用于一些简单的时间使用检测。

效果如下:

I/Stack   (21850): ---------------------------------测试方法运行时间的调用 START ---------------------------------
I/Stack   (21850): class name                              method name         current time   increased time 
I/Stack   (21850): com.jue.stack.MainActivity              onCreate            2              2              
I/Stack   (21850): com.jue.stack.MainActivity              onStart             10             8              
I/Stack   (21850): com.jue.stack.MainActivity              onResume            15             5              
I/Stack   (21850): =================================测试方法运行时间的调用  END  =================================

源码很简单:

package com.jue.stack;

import android.os.SystemClock;
import android.util.Log;

public class StackUtils {

	public static String sTag = "Stack";
	private static String sTitle = "unknow";
	private static String startline = "---------------------------------";
	private static String endline = "=================================";

	private static long sStartTime = -1;
	private static long sCurTime = -1;
	private static long sLastTime = -1;

	private StackUtils() {
	}

	public static void start(String title) {
		clear();
		init(title);
		initHead();
	}

	public static void stop() {
		StringBuilder sb = new StringBuilder();
		sb.append(endline).append(sTitle).append("  END  ").append(endline);
		Log.i(sTag, sb.toString());
	}

	public static void clear() {
		sTag = "Stack";
		sTitle = "unknow";
		sStartTime = -1;
		sCurTime = -1;
		sLastTime = -1;
	}

	private static void init(String title) {
		sTitle = title;
		sStartTime = SystemClock.elapsedRealtime();
		sCurTime = 0;
		sLastTime = 0;
	}

	private static void initHead() {
		StringBuilder sb = new StringBuilder();
		sb.append(startline).append(sTitle).append(" START ").append(startline);

		String s = String.format("%-40s%-20s%-15s%-15s", "class name",
				"method name", "current time", "increased time");

		android.util.Log.i(sTag, sb.toString());
		android.util.Log.i(sTag, s.toString());
	}

	public static void logs() {
		StackTraceElement ste = new Throwable().getStackTrace()[1];
		String methodName = ste.getMethodName();
		String className = ste.getClassName();

		String s = String.format("%-40s%-20s%-15s%-15s", className, methodName,
				getCurTime(), getIncresedTime());

		Log.i(sTag, s);

		sLastTime = sCurTime;
	}

	private static Object getIncresedTime() {
		return String.valueOf(sCurTime - sLastTime);
	}

	private static String getCurTime() {
		sCurTime = SystemClock.elapsedRealtime() - sStartTime;
		return String.valueOf(sCurTime);
	}
}

调用类如下:

package com.jue.stack;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		StackUtils.start("测试方法运行时间的调用");
		StackUtils.logs();
	}

	@Override
	protected void onStart() {
		super.onStart();
		StackUtils.logs();
	}

	@Override
	protected void onResume() {
		super.onResume();
		StackUtils.logs();
		StackUtils.stop();
	}

}





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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值