今天看了下文檔,說TraceView 對程式的的效能和最佳化有很大的協助:
本人比較懶,文章也沒繼續往下下看,直接百度了下TraceView 的提示,資源很多,介紹怎麼使用
推薦:http://blog.csdn.net/itachi85/article/details/6857324
當然具體怎麼做的步驟簡單的一下,大概分這麼幾步:
一:在建立avd ,給sd卡的記憶體大一點,因為後面的debug.raceView 產生的檔案可能比較的大。
二:寫一個測試的程式:
Debug.startMethodTracing();
有開始當然必須有結束,如果不掉用Debug.stopMethodTracing(); 在sd卡的根目錄上則不會出現dmtrace.trace 檔案
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
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 (自己的路勁哦)
物: 然後你就看打如下介面:
看到介面是不是暈了啊!:
這個咋看啊 ! 剛開始進來我也不知道看啥,也不知道怎麼看,不懂百度:
原來:
在traceview的右半部統計欄位中:
Exclusive: 同級函數本身啟動並執行時間Inclusive 就是說除統計函數本身啟動並執行時間外再加上調用子函數所啟動並執行時間
Name:列出的是所有的調用項,前面的數字是編號,展開可以看到有的有Parent 和Children子項,就是指被調用和調用。
Incl: inclusive時間佔總時間的白分比
Excl: 執行佔總時間的白分比。
Calls+Recur Calls/Total: 調用和重複調用的次數Time/Call: 總的時間。(ms) 是不是明白了些
本人還有個使用的心得,跟大家分享下: 就是你看到下面的資料這麼多,又不知道看什麼好時,最底下是不是有一個過濾欄,如果沒有他你眼睛都會被晃瞎啊,因為資料太多了
好上面是簡單的 TraceView 使用:
下面咋門用他來驗證下,是不是有這麼的神奇啊 !
不驗證其他的就用他來驗證我的Listview效能 ,這個問題很糾結我很長的一段時間了,因為listview最佳化網上給出了很多不同的版本和意見:
關於listView 最佳化的:
http://www.cnblogs.com/over140/archive/2011/03/23/1991100.html
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 資訊
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 stubreturn listData.size();}public Object getItem(int position) {// TODO Auto-generated method stubreturn listData.get(position);}public long getItemId(int position) {// TODO Auto-generated method stubreturn position;}public View getView(int position, View convertView, ViewGroup parent) {// TODO Auto-generated method stubif(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
<?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>
:
文章篇幅有限: 轉接下篇:http://blog.csdn.net/liao3841054/article/details/7162428
轉載請申明出入:http://blog.csdn.net/liao3841054/article/details/7162181