展会信息港展会大全

android TraceView使用以及listview 的性能优化测试(一)
来源:互联网   发布日期:2015-11-27 13:30:10   浏览:1911次  

导读:今天看了下文档,说TraceView 对程序的的性能和优化有很大的帮助:本人比较懒,文章也没继续往下下看,直接百度了下TraceView 的使用技巧,资源很多,介绍怎么使用推荐:htt...

今天看了下文档,说TraceView 对程序的的性能和优化有很大的帮助:

本人比较懒,文章也没继续往下下看,直接百度了下TraceView的使用技巧,资源很多,介绍怎么使用

推荐:http://www.2cto.com/kf/201201/116594.html

当然具体怎么做的步骤简单的一下,大概分这么几步:

一:在创建avd ,给sd卡的内存大一点,因为后面的debug.raceView生成的文件可能比较的大。

二:写一个测试的程序:

[html] view plaincopy

Debug.startMethodTracing();

有开始当然必须有结束,如果不掉用Debug.stopMethodTracing();在sd卡的根目录上则不会出现dmtrace.trace 文件

[java] view plaincopy

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

[html] view plaincopy

note:建议在onPuse()方法中调用Debug.stopMethodTracing ,不建议在ondestory() 或者onstop()方法中调用,因为有可能程序在莫名的情况下不一定会走ondestory,和onstop ,所以在onpuse中比较的靠谱

三: 运行前不要着急:记得给sd卡加权限 否则会抛权限异常的:

四: 生成了dmtrace.trace文件当然需要看了啊! 怎么看,google人性化,在android 开发工具中的 tools 中有个TraceView 工具只你只要

cmd 到该目录下,然后再把sd卡上的dmtrace.trace 文件导入到pc 的 某个路劲 (默认是的:c\dmtrace.trace)

然后执行:traceview C:\dmtrace.trace (自己的路劲哦)

物: 然后你就看打如下界面:

看到界面是不是晕了啊!:

这个咋看啊 ! 刚开始进来我也不知道看啥,也不知道怎么看,不懂百度:

原来:

[html] 在traceview的右半部统计字段中:

在traceview的右半部统计字段中:[html] Exclusive: 同级函数本身运行的时间Inclusive 就是说除统计函数本身运行的时间外再加上调用子函数所运行的时间

Exclusive: 同级函数本身运行的时间Inclusive 就是说除统计函数本身运行的时间外再加上调用子函数所运行的时间[html] Name:列出的是所有的调用项,前面的数字是编号,展开可以看到有的有Parent 和Children子项,就是指被调用和调用。

Name:列出的是所有的调用项,前面的数字是编号,展开可以看到有的有Parent 和Children子项,就是指被调用和调用。[html] Incl: inclusive时间占总时间的白分比

Incl: inclusive时间占总时间的白分比[html] Excl: 执行占总时间的白分比。

Excl: 执行占总时间的白分比。[html] Calls+Recur Calls/Total: 调用和重复调用的次数

Time/Call: 总的时间。(ms)

是不是明白了些

Calls+Recur Calls/Total: 调用和重复调用的次数

Time/Call: 总的时间。(ms)

是不是明白了些

本人还有个使用的心得,跟大家分享下: 就是你看到下面的数据这么多,又不知道看什么好时,最底下是不是有一个过滤栏,如果没有他你眼睛都会被晃瞎啊,因为数据太多了

好上面是简单的 TraceView使用:

下面咋门用他来验证下,是不是有这么的神奇啊 !

不验证其他的就用他来验证我的Listview性能 ,这个问题很纠结我很长的一段时间了,因为listview优化网上给出了很多不同的版本和意见:

关于listView 优化的: http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html

[java] package com.liao.listadpter;

import java.util.ArrayList;

import java.util.List;

import android.app.ListActivity;

import android.os.Bundle;

import android.os.Debug;

public class MainActivity extends ListActivity {

private List<String> data;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.main);

Debug.startMethodTracing();

initData();

initadapter();

}

public void initData() {

data = new ArrayList<String>();

for (int i = 0; i < 1000; i++) {

data.add("test: " + i);

}

}

public void initadapter() {

TestAdapter testAdapter = new TestAdapter(data, MainActivity.this);

this.setListAdapter(testAdapter);

}

@Override

protected void onPause() {

// TODO Auto-generated method stub

super.onPause();

Debug.stopMethodTracing();

}

}

package com.liao.listadpter;

import java.util.ArrayList;

import java.util.List;

import android.app.ListActivity;

import android.os.Bundle;

import android.os.Debug;

public class MainActivity extends ListActivity {

private List<String> data;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

//setContentView(R.layout.main);

Debug.startMethodTracing();

initData();

initadapter();

}

public void initData() {

data = new ArrayList<String>();

for (int i = 0; i < 1000; i++) {

data.add("test: " + i);

}

}

public void initadapter() {

TestAdapter testAdapter = new TestAdapter(data, MainActivity.this);

this.setListAdapter(testAdapter);

}

@Override

protected void onPause() {

// TODO Auto-generated method stub

super.onPause();

Debug.stopMethodTracing();

}

}

adapter 信息

[java] package com.liao.listadpter;

import java.util.List;

import org.w3c.dom.Text;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

public class TestAdapter extends BaseAdapter{

private List<String> listData;

private Context context;

private LayoutInflater inflater;

private LinearLayout layout;

TestAdapter(List<String> listData ,Context context){

this.listData =listData;

this.context =context;

inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {

// TODO Auto-generated method stub

return listData.size();

}

public Object getItem(int position) {

// TODO Auto-generated method stub

return listData.get(position);

}

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

if(convertView ==null){

layout = (LinearLayout) inflater.inflate(R.layout.listview, null);

}

else{

layout = (LinearLayout) convertView;

}

int id= position %2==1? R.drawable.icon: R.drawable.default_head;

((ImageView) layout.findViewById(R.id.iamge)).setImageResource(id);

((TextView) layout.findViewById(R.id.text)).setText(listData.get(position));;

//TextView text = (TextView) layout.findViewById(R.id.text);

//ImageView view= (ImageView) layout.findViewById(R.id.iamge);

//

//text.setText(listData.get(position));

return layout;

}

static class ViewHoder{

public TextView text;

public ImageView view;

}

}

package com.liao.listadpter;

import java.util.List;

import org.w3c.dom.Text;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.ImageView;

import android.widget.LinearLayout;

import android.widget.TextView;

public class TestAdapter extends BaseAdapter{

private List<String> listData;

private Context context;

private LayoutInflater inflater;

private LinearLayout layout;

TestAdapter(List<String> listData ,Context context){

this.listData =listData;

this.context =context;

inflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);

}

public int getCount() {

// TODO Auto-generated method stub

return listData.size();

}

public Object getItem(int position) {

// TODO Auto-generated method stub

return listData.get(position);

}

public long getItemId(int position) {

// TODO Auto-generated method stub

return position;

}

public View getView(int position, View convertView, ViewGroup parent) {

// TODO Auto-generated method stub

if(convertView ==null){

layout = (LinearLayout) inflater.inflate(R.layout.listview, null);

}

else{

layout = (LinearLayout) convertView;

}

int id= position %2==1? R.drawable.icon: R.drawable.default_head;

((ImageView) layout.findViewById(R.id.iamge)).setImageResource(id);

((TextView) layout.findViewById(R.id.text)).setText(listData.get(position));;

//TextView text = (TextView) layout.findViewById(R.id.text);

//ImageView view= (ImageView) layout.findViewById(R.id.iamge);

//

//text.setText(listData.get(position));

return layout;

}

static class ViewHoder{

public TextView text;

public ImageView view;

}

}

下面是xml

[html] <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation ="horizontal"

>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="list 1"

android:id ="@+id/text"

android:layout_gravity = "center_vertical"

/>

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id ="@+id/iamge"

android:src ="@drawable/icon"

/>

</LinearLayout>

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation ="horizontal"

>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="list 1"

android:id ="@+id/text"

android:layout_gravity = "center_vertical"

/>

<ImageView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:id ="@+id/iamge"

android:src ="@drawable/icon"

/>

</LinearLayout>

效果图:

摘自 android小益的专栏

赞助本站

人工智能实验室

相关热词: android开发 教程

相关内容
AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港