⑴ 有沒有那種可以記錄每天手機使用時間的app
這類記錄手機使用時間的APP非常多,目前一些系統也已經集成了監控手機應用使用時長的功能。以下是詳細介紹:
1、【開機時光】,若超過設定時間屏幕上的藍天會變成霧霾;健康樹記錄了最近30天目標完成情況,綠色樹葉表示當天達成目標,黃色樹葉表示未達成;如果只是想要查看詳細數據,可以通過向右滑動屏幕查看;
2、Aptrax,沒有花哨的界面和復雜的功能,它專注於手機應用記錄,只需開啟Aptrax並允許後台運行,它就能准確記錄你所有的應用使用情況,並根據啟動次數和運行時間由多到少整齊地排列出來。使用幾天之後再次打開 Aprax,一份詳細的列表就會呈現在你眼前,所有記錄一目瞭然;
3、如果是iOS系統,在升級到iOS12之後,就可以在【設置】中找到【屏幕使用時間】選項,就可以用柱狀圖查看當前設備或者是所有使用同一個Apple ID設備的使用時間,還可以設置【停用時間】和【應用限額】等選項。
⑵ 如何獲取android從系統開機開始算起的運行時間
設置,關於手機裡面,應該有運行時間
⑶ 怎麼計算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 的時候,一定要記得將應用的啟動時間作為一個性能指標,畢竟
天下武功,唯快不破!
⑷ android如何監控統計各個應用程序運行的時間
我的需求裡面有: 監控軟體玩了多長時間 ...樓主問題解決了 木有?