android TraceView使用以及listview 的效能最佳化測試(一)

來源:互聯網
上載者:User

   今天看了下文檔,說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

 

 

 

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.