Ⅰ android app啟動時間測試,使用ADB命令如何實現
直接寫一個腳本使用adb命令控制app啟動,然後使用截屏命令快速截屏最終將截屏結果的產生時間做分析即可
Ⅱ 怎麼計算android app啟動時間
事實上 Android 中一個 App 的啟動時間可以准確計算的.但是要分場景.也就是說要分開游戲和應用. 大家都知道,在Android中,游戲開發和應用開發是兩碼事.所以我們需要分開來說.
1.1 應用啟動
我們平時在寫應用的時候,一般會指定一個 mainActivity ,用戶在桌面上點擊這個 Activity 的時候,系統會直接起這個 Activity. 我們知道 Activity 在啟動的時候會走 onCreate/onStart/onResume .這幾個回調函數.
許多書里講過,當執行完 onResume 函數之後,應用就顯示出來了…其實這是一種不準確的說法,因為從系統層面來看,一個 Activity 走完 onCreate/onStart/onResume 這幾個生命周期之後,只是完成了應用自身的一些配置,比如 window 的一些屬性的設置/ View 樹的建立(只是建立,並沒有顯示,也就是說只是調用了 inflate 而已) . 後面 ViewRootImpl 還會調用兩次performTraversals ,初始化 Egl 以及 measure/layout/draw. 等.所以我們定義一個 Android 應用的啟動時間, 肯定不能在 Activity 的回調函數上下手.而是以用戶在手機屏幕上看到你在 onCreate 的 setContentView 中設置的 layout 完全顯示為准,也就是我們常說的應用第一幀.
上面扯得有點遠,不感興趣的話可以不看,下面直接說方法.題主說的 adb shell am start -w packagename/activity,是可以完全應用的啟動時間的.不過也要分場景.
1.2 應用第一次啟動
也就是我們常說的冷啟動,這時候你的應用程序的進程是沒有創建的. 這也是大部分應用的使用場景.用戶在桌面上點擊你應用的 icon 之後,首先要創建進程,然後才啟動 MainActivity.這時候adb shell am start -w packagename/MainActivity 返回的結果,就是標準的應用程序的啟動時間(注意 Android 5.0 之前的手機是沒有 WaitTime 這個值的):
➜ adb shell am start -W com.meizu.media.painter/com.meizu.media.painter.PainterMainActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.meizu.media.painter/.PainterMainActivity }
Status: ok
Activity: com.meizu.media.painter/.PainterMainActivity
ThisTime: 355
TotalTime: 355
WaitTime: 365
Complete
總共返回了三個結果,我們以 WaitTime 為准.
關於ThisTime/TotalTime/WaitTime的區別,下面是其解釋:
「adb shell am start -W 」的實現在 frameworks\base\cmds\am\src\com\android\commands\am\Am.java 文件中。其實就是跨Binder調用ActivityManagerService.startActivityAndWait() 介面(後面將ActivityManagerService簡稱為AMS),這個介面返回的結果包含上面列印的ThisTime、TotalTime時間.
startTime記錄的剛准備調用startActivityAndWait()的時間點
endTime記錄的是startActivityAndWait()函數調用返回的時間點
WaitTime = startActivityAndWait()調用耗時。
ThisTime、TotalTime 的計算在 frameworks\base\services\core\java\com\android\server\am\ActivityRecord.java 文件的 reportLaunchTimeLocked() 函數中。
我們來解釋下代碼里curTime、displayStartTime、mLaunchStartTime三個時間變數.
curTime表示該函數調用的時間點.
displayStartTime表示一連串啟動Activity中的最後一個Activity的啟動時間點.
mLaunchStartTime表示一連串啟動Activity中第一個Activity的啟動時間點.
正常情況下點擊桌面圖標只啟動一個有界面的 Activity,此時 displayStartTime 與mLaunchStartTime 便指向同一時間點,此時 ThisTime=TotalTime。另一種情況是點擊桌面圖標應用會先啟動一個無界面的 Activity 做邏輯處理,接著又啟動一個有界面的Activity,在這種啟動一連串 Activity 的情況下(知乎的啟動就是屬於這種情況),displayStartTime 便指向最後一個 Activity 的開始啟動時間點,mLaunchStartTime 指向第一個無界面Activity的開始啟動時間點,此時 ThisTime!=TotalTime。
看到這里應該清楚 ThisTime、TotalTime、WaitTime 三個時間的關系了吧。WaitTime 就是總的耗時,包括前一個應用 Activity pause 的時間和新應用啟動的時間;ThisTime 表示一連串啟動 Activity 的最後一個 Activity 的啟動耗時;TotalTime 表示新應用啟動的耗時,包括新進程的啟動和 Activity 的啟動,但不包括前一個應用 Activity pause 的耗時。也就是說,開發者一般只要關心 TotalTime 即可,這個時間才是自己應用真正啟動的耗時。
Event log中 TAG=am_activity_launch_time 中的兩個值分表表示 ThisTime、TotalTime,跟通過 「adb shell am start -W 」 得到的值是一致的。
最後再說下系統根據什麼來判斷應用啟動結束。我們知道應用啟動包括進程啟動、走 Activity生命周期 onCreate/onResume 等。在第一次 onResume 時添加窗口到WMS中,然後measure/layout/draw,窗口繪制完成後通知 WMS,WMS 在合適的時機控制界面開始顯示(夾雜了界面切換動畫邏輯)。記住是窗口界面顯示出來後,WMS 才調用reportLaunchTimeLocked() 通知 AMS Activity 啟動完成。
最後總結一下,如果只關心某個應用自身啟動耗時,參考TotalTime;如果關心系統啟動應用耗時,參考WaitTime;如果關心應用有界面Activity啟動耗時,參考ThisTime。
1.2 應用非第一次啟動
如果是你按Back鍵,並沒有將應用進程殺掉的話,那麼執行上述命令就會快一些,因為不用創建進程了,只需要啟動一個Activity即可。這也就是我們說的應用熱啟動。
2 游戲啟動場景
游戲啟動的話,就不適用用命令行的方法來啟動了,因為從用戶點擊桌面圖標到登錄界面,既有系統的部分也有游戲自己的部分。
2.1 系統部分
游戲也有一個Activity,所以啟動的時候還是會去啟動這個Activity,所以系統啟動部分也就是用戶點擊桌面桌面響應到這個Activity啟動。
2.2 游戲部分
一般游戲的主Activity啟動後,還會做一些比較耗時的事情,這時候你看到的界面是不能操作的,比如:載入游戲數據、聯網更新數據、讀取和更新配置文件、游戲引擎初始化等操作。從游戲開發的角度來看,到了真正用戶能操作的界面才算是一個游戲真正載入完成的時間。那麼這個時間,就得使用Log來記錄了,因為載入游戲數據、聯網更新數據、讀取和更新配置文件、游戲引擎初始化這些操作,都是游戲自己的邏輯,與系統無關,所以得由游戲自己定義載入完成的點。
對於游戲的啟動時間,我們更傾向於計算從 點擊桌面圖標 到 用戶可以與游戲進行交互 這個時間段作為一個游戲的啟動時間。
3 總結
計算機最讓人著迷的一點就是其准確性,1+1永遠等於2,啟動耗時多久就是多久,每一次可能不一樣,但每一次的時間都是這一次的准確時間。
不過每個公司由於對應用的定位不同,所以對應用啟動的要求也不一樣。比如有的做 ROM 的公司,其內置應用的啟動時間一定是要非常快的,這樣給用戶的第一感覺就是快、流暢;互聯網公司的 App 則不是很關心啟動速度,大部分互聯網公司的應用都有一個啟動頁,用來展示廣告或者功能介紹之類的,然後才會進入到主界面。需求不一樣,這么做也無可厚非,不過從消費者的角度來看,越早見到主界面當然越好。
所以在做一個 Android App 的時候,一定要記得將應用的啟動時間作為一個性能指標,畢竟
天下武功,唯快不破!
Ⅲ 如何查看手機第一次開機時間
以魅族手機為例:
1、首先解鎖手機,進入桌面,單擊「設置」進入「設置」。
Ⅳ 怎麼查看手機最近開機時間
以安卓手機為例,查詢手機開機運行時間的方法如下:
1、首先,在手機桌面上找到設置菜單命令;接著在設置首頁最上方點擊我的設備。
2、然後選擇全部參數;然後最下方的狀態信息,點擊可以查看本機號碼、信號;這里邊就可以查看到手機的已開機時間了,「已開機時間」這一項就是手機開機運行時間。
1、在手機撥號界面,輸入*#06# 查詢IEMI號。
2、查詢到IMEI號後,按住IMEI號,進行復制。
3、找到手機中的會員服務,打開。
4、選擇保修查詢。
5、點擊查詢進入查詢頁面,按住粘貼剛剛復制的IMEI號,點擊查詢。
6、這里可能會有兩種結果: 1)查詢不到保修期,說明你這個是新機,保修信息還沒到華為的系統。 2)查詢到保修期,根據保修期往前推算一年,可以知道第一次激活的日期,就可以判斷你激活的時候是不是第一次激活。
如果想要查看一下手機上次的開機時間,了解手機開機後運行了多長時間,這時該怎麼樣來查詢呢?下面就與大家一起分享一下查看的方法吧。
開啟分步閱讀模式
工具材料:
小米手機
操作方法
01
首先我們按一下小米手機的電源按鈕,解鎖當前的手機屏幕。
02
接下來我們左右滑動屏幕找到小米手機的「設置」圖標
03
點擊後打開小米手機的設置頁面,在頁面中我們點擊「我的設備」菜單項。
04
在打開的我的設備頁面中,點擊下面的「全部參數」菜單項。
05
這時就會打開全部參數頁面,在頁面中向下拉動屏幕,找到「狀態信息」菜單項。
06
在打開的狀態信息頁面中,可以看到「已開機時間」菜單項,在這里可以看到當前手機上次開機到現在的時間了。
Ⅳ 車機安卓系統啟動時間
車機安卓系統啟動時間大概10秒鍾左右。現在的車機基本上都是安卓的,有小部分是基於安卓二開的。首先汽車的車機系統,有些不是廠商自己開發的,而是外包給專門的第三方公司。在燃油車時代,汽車廠商只研發發動機,變速箱,底盤這些重要的東西。像車機系統這些東西並不是廠商自己開發的。不過隨著新能源時代,自動駕駛時代的到來,車機系統的重要性越來越大。所以最近幾年廠商也在重點開發車機系統。但是依然不會完全自主開發,而是與其他公司合作。比如說上汽集團的斑馬系統就是上汽與阿里巴巴聯合開發的。還有一些車機系統是華為,騰訊,網路這樣的公司來參與開發。
Ⅵ 如何檢測App啟動時間
對於app的性能測試,啟動時間是個重要指標,啟動時間分為兩種情況,一種是冷啟動時間(通常是系統重啟,即在啟動前沒有該app進程的情況),另一種是熱啟動,即app從被切換到前台(點back退出後再點擊圖標啟動)。
從Android4.4(API 19)開始,可以從logcat獲取activity的啟動信息,如下我用應用寶做實驗,可以看到如下的輸出,從這里我們可以看到應用的這個activity啟動用了639ms。
12-13 00:10:41.331 855-957/? I/ActivityManager: [AppLaunch] Displayed Displayed com.tencent.android.qqdownloader/com.tencent.assistantv2.activity.MainActivity: +639ms (total +751ms)
12-13 00:10:41.331 855-957/? D/ActivityManager: AP_PROF:AppLaunch_LaunchTime:com.tencent.android.qqdownloader/com.tencent.assistantv2.activity.MainActivity:639:50307447
這個log信息會在activity首次被繪制時輸出,也就是如果activity棧里有這個activity,再啟動不會輸出該信息,典型的場景是通過recent task列表切換到其他activity再立即切換回來時。
log中的時間包括系統從開始處理啟動activity的時間到完成運行layout和draw函數的時間,不包括點擊icon到系統接收到消息的時間。顯然,這個時間也不包括啟動中非同步UI繪制的時間。但是我們在測試中關注的其實是用戶體驗的啟動時間,那麼上面log中的時間就不能滿足我們的需求了。
不過還好,既然是用戶體驗我們可以用更直觀的方式,使用screenrecord進行屏幕錄制然後分析視頻。使用如下命令錄制視頻。
adb shell screenrecord –bugreport /sdcard/launch.mp4
–bugreport參數會使視頻輸出一些時間信息和幀信息便於我們分析啟動時間。activity啟動後,使用ctrl+c結束視頻錄制,使用
adb shell pull /sdcard/launch.mp4 /Users/xxx/Downloads/launch.mp4
導出視頻到電腦,使用可以按幀播放的視頻軟體打開(mac上quicktime就可以,win下可以用kmplayer),並按幀播放。
按幀播放視頻,視頻左上角會顯示每一幀的時間(精確到ms)和幀數。在視頻中會看到icon會變暗然後高亮,高亮時就是系統開始處理本次icon點擊事件了。可以把這里作為點擊時間,然後根據體驗要求,看到app啟動頁完全繪制完作為終止時間,這個時間減去點擊時間就是app的啟動時間。
在進行app啟動時間測試時,系統中運行的其他app會對啟動時間有干擾,如果需要進行版本對比及競品對比,最好要盡量保持環境一致,並反復執行多次取平均值。最後,不要忘了分別測試冷啟動和熱啟動哦~
Ⅶ 安卓怎麼查看開機時間 Android中如何計算App的啟動時間
從購買到現在的使用時間是無法查的,只能查到你從拔掉數據線到使用到現在的時間。