我已经创建了一个使用'UsageEvents'.检查前台活动的服务
private void getForegroundActivity() {
String packageName = "";
String className = "";
Calendar cal_begin = Calendar.getInstance();
cal_begin.set(Calendar.YEAR, -1);
long _begTime = cal_begin.getTimeInMillis();
long _endTime = System.currentTimeMillis();
UsageStatsManager usageStatsManager = (UsageStatsManager) this.getSystemService(Context.USAGE_STATS_SERVICE);
if (usageStatsManager != null) {
UsageEvents queryEvents = usageStatsManager.queryEvents(_begTime, _endTime);
if (queryEvents != null) {
UsageEvents.Event event = new UsageEvents.Event();
while (queryEvents.hasNextEvent()) {
UsageEvents.Event eventAux = new UsageEvents.Event();
queryEvents.getNextEvent(eventAux);
if (eventAux.getEventType() == UsageEvents.Event.MOVE_TO_FOREGROUND) {
event = eventAux;
}
}
packageName = event.getPackageName();
className = event.getClassName();
}上面的代码工作良好,并给出了适当的前台活动,但经过一段时间(假设2-3个小时后),‘queryEvents(_begTime, _endTime)’返回‘0’(零)计数!!
在服务中是否有使用服务的其他方式?
任何其他的建议,想法都是值得赞赏的。
发布于 2017-03-22 05:05:34
queryEvents()返回的事件由系统只保存几天。因此,您可能必须维护一个本地数据库来在本地维护这些状态。代码中没有问题。
有关queryEvents()方法和UsageStatsManager的更多信息,请查看以下链接:
https://stackoverflow.com/questions/42942986
复制相似问题