目錄
1.1、adb命令
1.2、手動打點
2、啟動優化工具選擇
2.1、traceview
2.1.1、介紹:
2.1.2、使用:
2.1.3、總結:
2.2、systrace
2.2.1、介紹:
2.2.2、使用:
2.2.3、總結:
2.2.4、cputime與walltime的區別:
3、優雅獲取方法耗時
3.1、常規方式
3.2、aop介紹
3.2.1、aspectj使用
3.2.2、 join points
3.2.3、pointcut
3.2.4、advice
3.2.5、語法簡介:
3.3、aop實戰
兩種方式:
參考文章:在android studio中使用adb命令
adb shell am start -w com.example.jiajiemu.a11/com.example.jiajiemu.a11.mainactivity
會看到以下結果
d:\as3_ws\as3_model\summary\androidmianshi14>adb shell am start -w com.example.jiajiemu.a11/com.example.jiajiemu.a11.mainactivity
starting: intent
warning: activity not started, its current task has been brought to the front
status: ok
activity: com.example.jiajiemu.a11/.mainactivity
thistime: 117
totaltime: 117
waittime: 134
complete
thistime:最後乙個activity啟動耗時
totaltime:所有activity啟動耗時
waittime:ams啟動activity的總耗時
總結:線下使用方便,不能帶到線上
不嚴謹、非精確地時間
啟動時埋點,啟動結束時埋點,二者差值
public class launchtimer
public static void endrecord()
public static void endrecord(string msg)
}
避開誤區,採用feed第一條展示
正解:真實資料展示,feed第一條展示(即adapter中的第一條資料)
兩種方式互相補充
正確認識工具及不同場景選擇合適的工具
//開始
debug.startmethodtracing("檔名");
//結束
debug.stopmethodtracing();
生成檔案在sd卡:android/data/packagename/files
沒辦法實戰。。。。
命令:python systrace.py -t 10 [other-options][categories]
國外**,貌似無法訪問!
實際上它是乙個python指令碼
正確使用方式:在電腦上開啟終端,輸入命令:
如下圖:
我的因為裝了3.7,懶得裝2.7了。
就可以生成相應的檔案了。
背景:需要知道啟動階段所有方法耗時
實現:手動埋點
具體實現:
long time = system.currenttimemillis();
long cost = system.currenttimemillis() - time;
//cpu執行的時間
systemclock.currentthreadtimemillis();
總結:
侵入性強、工作量大(需在每個方法首尾寫上如上方法)
aspect oriented programming 面向切面程式設計
針對同一類問題的統一處理
無侵入新增**
project的build.gradle
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'
module的build.gradle
classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.0'
module的build.gradle
程式執行時的執行點,可以作為切面的地方
帶條件的joinpoints
一種hook,要插入**的位置
public void onactivitycalled(joinpoint joinpoint) throws throwable
無侵入性、修改方便、便於維護
App效能優化
首先,我們來了解一下,安卓裡面的記憶體分配方式以及它的 方式,的設定最大記憶體這段 不起作用 設定了也沒有什麼用 對於那種太久沒有使用的程序,而且又消耗記憶體的,就直接被gc 安卓的一種 機制 給 掉了。上附帶的功能進行檢視 當然也可以通過 來實現檢視 runtime.getruntime maxt...
APP效能優化基礎
這裡我大概從以下幾個方面分析吧 資料解析 從解析難度和速度來看,大家都比較傾向於json,目前也是最主流的資料格式。在android開發中可以使用優秀的解析庫來加快我們的解析速度,xml有jsoup,json有jackson gson,我們可以通過這些庫來幫助我們更快的完成資料解析,提高我們客戶端的...
優化APP效能(一)
我們都知道如何在android中建立乙個執行緒,如下 new thread new runnable start 但是這樣子建立執行緒有乙個缺點就是當乙個專案非常大,很多地方都需要開啟子執行緒去執行任務的時候,不斷建立執行緒對於系統的開銷還是非常大的,一定程度上影響系統效能。那麼我們如何才能提高執行...