2017-12-18 72 views
0

我想知道用户使用android手机多少时间。手机可能会在一天内多次启动,因此SystemClock.uptimeMillis()可能无法处理此案。如何获得Android手机和应用程序的日常使用情况?

有没有办法读取系统日志了解时间戳系统启动和时间戳系统关机?或者我需要BroadcastReceiver来捕获BOOT_COMPLETESHUT_DOWN事件并写入存储?

+1

整合谷歌火力(https://firebase.google.com/)可能是一种选择。它会给个人使用时间,但假设您只是想了解您的应用使用频率,它确实提供了平均会话时间(其中包括崩溃分析等) – Boardy

回答

0

我建议你与触发在BOOT_COMPLETE并启动服务,这里面你的系统时间一个BroadcastReceiver一个应用程序(假设X)。另一种广播接收器将SHOT_DOWN被触发,并发送信息(通过粘合剂或其他方法)到正在运行的服务,再次获得系统时间(比方说,Y),并保存在它们之间SharedPreferences(Y-X)的差异。

这样你可以很容易地知道设备多少时间(可达纳秒)为上。

注意,你是不是做广播接收器内的任何长期运行的进程,但是从它开始服务,而不是。服务流程具有更高的优先级,不会被Android操作系统杀死。另外,我读过BroadcastReceivers在被系统破坏之前有一些时间限制(大约10秒)。

+0

谢谢。因此,BroadcastReceiver是一个由事件触发的短生命过程,我们需要进程间通信来与活动和服务共享数据? –

+0

不一定是进程间。您的BroadcastReceivers和服务(同一个应用程序)将运行在相同的过程中。你只需要设置通信模式。您需要一项服务,因为接收器的设计时间不长。 –

相关问题