1. 程式人生 > >android 統計啟動時長,標準

android 統計啟動時長,標準

一.啟動的型別

冷啟 動,application沒有被建立,需要先建立程序,然後啟動MainActivity。由於這個過程需要fork一個新程序,所以耗時。

熱啟動,同上面對照,已經啟動過application,並駐留在系統記憶體內,只是需要喚醒該程序,並啟動MainActivity。

二:統計啟動時間

1.物理統計

通過高速相機,從點選launcher上面的圖示開始,到MainActivity的第一個可見幀,算作啟動時間。

2.adb 統計

adb shell am start -w pageage/activityname  通過這條命令啟動,可以獲得啟動時間。

$ adb shell am start -W com.abc.test/com.abc.test.MainActivity
Starting: Intent { act
=android.intent.action.MAIN cat= Status: ok Activity: com.speed.test/.HomeActivity ThisTime: 496 TotalTime: 496 WaitTime: 503 Complete

3.線上版本統計

如果是在線上版本,無法使用命令統計,我們分析下,所謂冷啟動,就是建立applicaiton開始,一直到MainActivity第一個可視畫面。

applicaiton 建立,可以從attachBaseContext()開始,得到startTime。MainActivity的第一個可視畫面,onResume其實還沒有看到畫面,最合適的回撥是onWindowFocusChanged,也就是獲得焦點。

但是這個回撥需要做適當的過濾,就能獲得endTime。

所以冷啟動就是兩個時間差。熱啟動的startTime 就是MainActivity的onRestart。

如果獲取onWindowFocusChanged 的時間,需要結合MainActivity的整個生命週期。

這裡有2個關鍵點,activity的啟動流程 & applicaiton到activity的生命週期。

activity啟動流程:

從launcher點選應用圖示,launcher呼叫startactivity,

通過binder機制可以理解,所有的服務最終都會通過AMS。

AMS首先會通過zygote fork出程序。程序啟動後準備好looper & 訊息佇列。然後呼叫 attach

 方法將應用程序繫結到 ActivityManagerService,然後進入 loop 迴圈,不斷地讀取訊息佇列裡的訊息,並分發訊息。

AMS儲存程序的代理物件,然後AMS通過該程序,建立activity的例項& 執行各生命週期。

所以整個冷啟動的流程如下:

-> Application 建構函式
-> Application.attachBaseContext()
-> Application.onCreate()
-> Activity 建構函式
-> Activity.setTheme()
-> Activity.onCreate()
-> Activity.onStart
-> Activity.onResume
-> Activity.onAttachedToWindow
-> Activity.onWindowFocusChanged

相關推薦

android 統計啟動標準

一.啟動的型別 冷啟 動,application沒有被建立,需要先建立程序,然後啟動MainActivity。由於這個過程需要fork一個新程序,所以耗時。 熱啟動,同上面對照,已經啟動過application,並駐留在系統記憶體內,只是需要喚醒該程序,並啟動MainActivity。 二:統計啟動時間

JavaWeb專案啟動自動執行程式碼的三種方式(包含不佔用tomcat啟動的方式)

三種方式實現在tomcat啟動時執行某段程式碼 由於這三種方式的執行時長計算在tomcat的啟動時長裡,如果tomcat設定了啟動超時時間,那麼這三種方式執行的操作很可能會讓tomcat啟動超時。 為了解決自動執行的部分不影響tomcat的正常啟動我們可以在三種方式中新建一個執行

Excel時間做差統計加班

(1)將加班時間段對應列複製貼上到新的Excel表格中,確定一下加班時間段單元格是時間格式或自定義格式中的時間型別,Ctrl+1即可顯示,或者看編輯欄中是否是時間格式顯示。 (2)如果開始時間和結束時間在一個單元格中,如17:00-18:14,在Notepad++中將“-”全部替換為多個空格。然

[資料採集]APP啟動統計

先列出了友盟平臺的統計方式 Android平臺:sdk版本v5.2.0及之後: app的單次使用時長=本次啟動的結束時間減去本次啟動的開始時間,即end_time減去start_time。 如果在本次啟動過程中,應用退到後臺執行(例如啟動應用的過程中接了個電話,接電

[轉]Android Studio啟動出現unable to access android sdk add-on list

上大 ras server tails dea tar ext ida 錯誤信息 轉載請標明出處:http://blog.csdn.net/xx326664162/article/details/50563122 文章出自:薛瑄的博客 你也可以查看我的其他同類文章,也會讓你

sql 通過某段時間求得改段時間內的工作排除工作日

好的 char rup and while 思路 then task 工作日 CREATE FUNCTION Fun_GetTotalHourBySomeTime(@TaskId NVARCHAR(30),@Bu_trupstartDate NVARCHAR(50),@Bu

ActiveMQ的設置消息事務確認機制 持久化

pub 重啟 list cto nta property 客戶端 tid 計數 轉載中------------ 1.消息事務 消息事務是在生產者producer到broker或broker到consumer過程中同一個session中發生的,保證幾條消息在發送過

視訊時間搓轉化成 分秒的格式

//方法一: 時間轉化 Sub.timeTransf = function(e, data) { var time = e.data('time'); e.html(formatSeconds(time)); function formatSeconds(value) {

使用libvlc播放音樂實時獲取位置、播放狀態、播放httpURL

#include <iostream> #include <unistd.h> #include "vlc/vlc.h" #include "libvlc.h" #include "libvlc_media_player.h" #include "libvlc_me

audio自定義樣式控制操作面板的暫停播放獲取音訊的以及根據進行進度條展示

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>audio例項</title> <script src="./js

統計視訊

視訊時長統計 pom <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w

ExifInterface 獲取照片拍攝引數(ISO,光圈解析度等)以及MediaMetadataRetriever 獲取視訊錄製引數(時間位元速率格式)

深夜趕緊補一篇熱乎的文章。 才疏學淺,也是Google 好久才找到2個關鍵的 API。 MediaMetadataRetriever 和 ExifInterface,大佬可以直接跳過下面文章,直接去看原始碼。 一: MediaMetada

ffmpeg獲取視訊Duration: 00:00:00.00的解決方案

情況:用了ffmpeg把直播視訊流錄製為視訊了,用ffmpeg -i d://a.mp4 檢視視訊的時長,結果獲得了Duration: 00:00:00.00, start: 0.022000, bitrate: N/A 解決辦法:用ffmpeg把這個視訊再次轉

spring定時器在啟動執行用註解方式

這個問題被坑大發了,因為沒加<load-on-startup>1</load-on-startup>,定時器就是不起來。web.xml中,一定記得新增<load-on-startup>1</load-on-startup>,這樣

Android APP啟動出現白屏或者黑屏怎麼辦?

1、為什麼APP啟動時會出現白屏或者黑屏? 當開啟一個Activity時,如果這個Activity所屬的應用還沒有在執行,系統會為這個Activity所屬的應用建立一個程序,但程序的建立與初始化都需要時間,在這個動作完成之前系統要做什麼呢?如果沒有任何反應的話

Android APP啟動出現白屏或者黑屏

問題描述: 啟動APP時會有短暫的白屏或者黑屏,大概1~2秒後,才會顯示主介面或者顯示啟動頁。 問題原因: 開啟一個Activity時,如果這個Activity所屬的應用還沒有在執行,系統會為這個Activity所屬的應 用建立

Android App 啟動顯示正在載入圖片(講解+原始碼)

原始碼下載地址: http://download.csdn.net/download/tangcheng_ok/7616001 微信、QQ、天天動聽等程式,在開啟時顯示了一張圖片,然後跳轉到相關介面。本文實現這個功能,其實很簡單.... 新建兩個Activity

Android 應用啟動優化白屏問題

一般情況下 我們在啟動APP的時候,螢幕會出現一段時間的白屏或者黑屏,不同的裝置可能白屏黑屏顯示的時間長短不同,裝置硬體較差的時間都會比較長,這顯然影響使用者體驗。現在我們來分析這個問題產生的原因。 當我們在啟動一個應用時,系統會去檢查是否已經這樣存在一個程序

Android App啟動Apk資源載入機制原始碼分析

在Andorid開發中我們要設定文字或圖片顯示,都直接通過Api一步呼叫就完成了,不僅是我們工程下res資源以及系統自帶的framwork資源也可以,那這些資源打包成Apk之後是如何被系統載入從而顯示出來的呢。 這裡我要從Apk安裝之後啟動流程開始講起,在桌面

設定android studio啟動不檢查sdk Android studio啟動總是在找AndroidSDK的解決辦法

安裝完android studio後,首次啟動會彈出檢查sdk元件等設定,點選finish會去下載sdk等,如果沒有設定代理的情況下,這個介面會卡很久。截圖如下: blog0826-1.png 所以