我想知道用戶使用android手機多少時間。手機可能會在一天內多次啓動,因此SystemClock.uptimeMillis()
可能無法處理此案。如何獲得Android手機和應用程序的日常使用情況?
有沒有辦法讀取系統日誌瞭解時間戳系統啓動和時間戳系統關機?或者我需要BroadcastReceiver
來捕獲BOOT_COMPLETE
和SHUT_DOWN
事件並寫入存儲?
我想知道用戶使用android手機多少時間。手機可能會在一天內多次啓動,因此SystemClock.uptimeMillis()
可能無法處理此案。如何獲得Android手機和應用程序的日常使用情況?
有沒有辦法讀取系統日誌瞭解時間戳系統啓動和時間戳系統關機?或者我需要BroadcastReceiver
來捕獲BOOT_COMPLETE
和SHUT_DOWN
事件並寫入存儲?
我建議你與觸發在BOOT_COMPLETE
並啓動服務,這裏面你的系統時間一個BroadcastReceiver一個應用程序(假設X)。另一種廣播接收器將SHOT_DOWN
被觸發,併發送信息(通過粘合劑或其他方法)到正在運行的服務,再次獲得系統時間(比方說,Y),並保存在它們之間SharedPreferences(Y-X)的差異。
這樣你可以很容易地知道設備多少時間(可達納秒)爲上。
注意,你是不是做廣播接收器內的任何長期運行的進程,但是從它開始服務,而不是。服務流程具有更高的優先級,不會被Android操作系統殺死。另外,我讀過BroadcastReceivers在被系統破壞之前有一些時間限制(大約10秒)。
謝謝。因此,BroadcastReceiver是一個由事件觸發的短生命過程,我們需要進程間通信來與活動和服務共享數據? –
不一定是進程間。您的BroadcastReceivers和服務(同一個應用程序)將運行在相同的過程中。你只需要設置通信模式。您需要一項服務,因爲接收器的設計時間不長。 –
整合谷歌火力(https://firebase.google.com/)可能是一種選擇。它會給個人使用時間,但假設您只是想了解您的應用使用頻率,它確實提供了平均會話時間(其中包括崩潰分析等) – Boardy