【Android】查看程序每个方法所花费的时间
来源:互联网 发布:java文件管理器源码 编辑:程序博客网 时间:2024/05/22 08:01
http://blog.csdn.net/kesenhoo/article/details/7106785
你是否遇到过这样的情况?
写好一个AP之后,可能你会觉得哪个地方有点卡,可是又不清楚具体卡在哪里?
或者说程序开发到后期我们可以做一些performance tuning的动作来提升AP的用户体验。
那么应该如何查看AP每一执行步骤的耗时呢?Android自带的DDMS里面就可以满足你的需求
下面以之前博客里面的一个小例子分享下如何进行Performance的调优:
【0】程序示例源码:
主程序:
- package com.kesen.hoo;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class ActivityMain extends Activity
- {
- private MyLogger logger = MyLogger.kLog();
- private MyLogger logger2 = MyLogger.jLog();
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- logger.i("This is log [01]");
- setContentView(R.layout.main);
- Button button = (Button) this.findViewById(R.id.button);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0)
- {
- // TODO Auto-generated method stub
- logger2.i("This is James action button.OnClick");
- }
- });
- }
- @Override
- protected void onResume()
- {
- // TODO Auto-generated method stub
- super.onResume();
- logger.d("This is kesen log [02]");
- }
- @Override
- protected void onPause()
- {
- // TODO Auto-generated method stub
- super.onPause();
- logger.w("This is kesen log [03]");
- }
- @Override
- protected void onStop()
- {
- // TODO Auto-generated method stub
- super.onStop();
- logger.v("This is kesen log [04]");
- }
- @Override
- protected void onDestroy()
- {
- // TODO Auto-generated method stub
- super.onDestroy();
- logger.e("This is kesen log [05]");
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:id="@+id/textview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"
- />
- <Button
- android:id="@+id/button"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"/>
- </LinearLayout>
见下图示意,点击开始之后,操作AP开始一些你需要检测的步骤,DDMS已经在记录数据,完成所需要的操作后点击同样的按钮,这个时候Eclipse会自动跳到记录的xxx.trace文件
下面就是自动显示的记录文件,最大化进行查看,请注意我图片上的注解:
这里其实我们可以看到一个AP的启动过程,从什么地方开始调用的,很是方便
上面的圈出的框中我们可以看到ActivityMain的OnCreate的总时间是34个Millisecond(毫秒),再点击SetContentView会看到花了31.423个Millisecond.而且我们有看到Parents与Childrens两个选项,从这个例子中看到OnCreate的主要耗时在于setContensView里面,如果是一个比较复杂的AP,这个Activity的layout元素比较多的,我们会花比较长的时间来做这个步骤,如果你发现这个步骤实在花费时间太多,比如好几百个Miliisecond的时候,我们需要考虑是不是可以把Layout进行优化,尽量减少layout的复杂度,这样会比较好。
写的不好,请多指教,谢谢!
你是否遇到过这样的情况?
写好一个AP之后,可能你会觉得哪个地方有点卡,可是又不清楚具体卡在哪里?
或者说程序开发到后期我们可以做一些performance tuning的动作来提升AP的用户体验。
那么应该如何查看AP每一执行步骤的耗时呢?Android自带的DDMS里面就可以满足你的需求
下面以之前博客里面的一个小例子分享下如何进行Performance的调优:
【0】程序示例源码:
主程序:
- package com.kesen.hoo;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.widget.Button;
- public class ActivityMain extends Activity
- {
- private MyLogger logger = MyLogger.kLog();
- private MyLogger logger2 = MyLogger.jLog();
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- // TODO Auto-generated method stub
- super.onCreate(savedInstanceState);
- logger.i("This is log [01]");
- setContentView(R.layout.main);
- Button button = (Button) this.findViewById(R.id.button);
- button.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0)
- {
- // TODO Auto-generated method stub
- logger2.i("This is James action button.OnClick");
- }
- });
- }
- @Override
- protected void onResume()
- {
- // TODO Auto-generated method stub
- super.onResume();
- logger.d("This is kesen log [02]");
- }
- @Override
- protected void onPause()
- {
- // TODO Auto-generated method stub
- super.onPause();
- logger.w("This is kesen log [03]");
- }
- @Override
- protected void onStop()
- {
- // TODO Auto-generated method stub
- super.onStop();
- logger.v("This is kesen log [04]");
- }
- @Override
- protected void onDestroy()
- {
- // TODO Auto-generated method stub
- super.onDestroy();
- logger.e("This is kesen log [05]");
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <TextView
- android:id="@+id/textview"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"
- />
- <Button
- android:id="@+id/button"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/hello"/>
- </LinearLayout>
见下图示意,点击开始之后,操作AP开始一些你需要检测的步骤,DDMS已经在记录数据,完成所需要的操作后点击同样的按钮,这个时候Eclipse会自动跳到记录的xxx.trace文件
下面就是自动显示的记录文件,最大化进行查看,请注意我图片上的注解:
这里其实我们可以看到一个AP的启动过程,从什么地方开始调用的,很是方便
上面的圈出的框中我们可以看到ActivityMain的OnCreate的总时间是34个Millisecond(毫秒),再点击SetContentView会看到花了31.423个Millisecond.而且我们有看到Parents与Childrens两个选项,从这个例子中看到OnCreate的主要耗时在于setContensView里面,如果是一个比较复杂的AP,这个Activity的layout元素比较多的,我们会花比较长的时间来做这个步骤,如果你发现这个步骤实在花费时间太多,比如好几百个Miliisecond的时候,我们需要考虑是不是可以把Layout进行优化,尽量减少layout的复杂度,这样会比较好。
写的不好,请多指教,谢谢!
- 【Android】查看程序每个方法所花费的时间
- 【Android】查看程序每个方法所花费的时间
- 【Android】查看程序每个方法所花费的时间
- 计算机执行代码所花费的时间
- 通过查看每个线程所占用的CPU时间
- 求一段代码运行时所花费的时间(模板设计方法设计模式)
- shell--判断执行脚本所花费的时间
- MTALAB查看程序运行时间的方法
- 查看每个事件所触发响应的方法、delegate等信息
- 用System.currentTimeMillis()计算程序运行花费的时间
- Java获得查询数据、运行程序花费的时间
- android遍历数组时计算遍历花费的时间
- Java_测试String和StringBilder连接字符串操作所花费的系统时间
- SQL查询执行某条SQL语句所花费的时间
- du:查看每个目录所占用的容量
- 查看Android程序启动时间
- sql server 2008查询作业所花费时间(亲自实践)
- 模拟并发调用并记录所花费时间
- Genymotion配置及使用教程
- wifidog 源码初分析(3)
- FlashSim安装及测试(http://www.jianshu.com/p/d6323869198d)
- 自定义View的上下左右距离等解析
- MySQL5.7.11免安装版的安装和配置:解决MYSQL 服务无法启动问题
- 【Android】查看程序每个方法所花费的时间
- 三目运算iOS
- 封装篇——图片模块(Glide)
- iOS设计模式
- 将版本信息显示在App图标上
- WebKit for Developers
- [5.1.1][odex/deodex]教你如何反编译在设定里添加"自启管理"功能
- Java中的setResizable()
- 无缝滚动和轮播