Android 6.0:UsageEvents方法';usagestastmanager.queryEvents()';正在给计数0(零)

Android 6.0:UsageEvents方法';usagestastmanager.queryEvents()';正在给计数0(零),android,service,usagestatsmanager,Android,Service,Usagestatsmanager,我创建了一个服务,在该服务中,我使用“usagevents”检查前台活动 private void getForegroundActivity() { String packageName = ""; String className = ""; Calendar cal_begin = Calendar.getInstance(); cal_begin.set(Calendar.YEAR, -1); long _b

我创建了一个服务,在该服务中,我使用“usagevents”检查前台活动

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小时后),“
查询事件(\u begTime,\u endTime)
”返回“0”(零)计数

服务中是否有其他方法使用
usagestastsmanager.queryEvents()


任何其他的指针、想法都将受到赞赏。

queryEvents()
返回的事件仅由系统保存几天。因此,您可能需要维护一个本地数据库来在本地维护这些统计数据。代码中没有问题

有关
queryEvents()
方法和UsageStatsManager的更多信息,请查看以下链接:


谢谢您的回复。我不知道queryEvents()只有几天的时间。你是如何发现这一点的?@user3132107在Android文档中提到过。“查询给定时间范围内的事件。事件仅由系统保留几天。”