Android效能優化三 APP啟動時間測量

2021-09-25 17:48:49 字數 3171 閱讀 1669

目錄

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 但是這樣子建立執行緒有乙個缺點就是當乙個專案非常大,很多地方都需要開啟子執行緒去執行任務的時候,不斷建立執行緒對於系統的開銷還是非常大的,一定程度上影響系統效能。那麼我們如何才能提高執行...