我正在尝试在Android设备上找到正在运行的服务的最后活动时间。我尝试过以下操作。
ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
{
if (service.service.getClassName().contains("com.truecaller"))//for example
{
System.out.println(service.service.getClassName());
System.out.println(service.lastActivityTime);
System.out.println(service.activeSince);
}
}
我在logcat.i上为system.out添加了一个标签,执行程序两次,执行之间有一分钟的差距。但两者的输出完全相同。这是可能的。我们如何找到实际的服务的最后活动时间?非常感谢任何帮助。
答案 0 :(得分:1)
但两者的输出完全相同。这是可能的。
引用the documentation for lastActivityTime
:
服务中有最后一个活动的时间(显式请求启动它或客户端绑定到它)。
据推测,在那一分钟内,没有人为这项服务打电话startService()
或bindService()
。
引用the documentation for activeSince
:
服务首次处于活动状态的时间,由启动或绑定服务的人员启动。
因此,只有在服务停止然后启动(通过stopService()
或stopSelf()
)或流程终止时才会更改。
因此,在袖口之外,您的结果似乎与记录的行为相符。
我们如何找到服务的实际上次活动时间?
我不知道“最后活动时间”对于服务意味着什么。