Android: UsageStatsManager não retornando resultados diários corretos

Estou tentando consultarUsageStats deUsageStatsManager, com o objetivo de retornar todos os pacotes de aplicativos usados diariamente e por quanto tempo.

O código:

public static List<UsageStats> getUsageStatsList(Context context){
    UsageStatsManager usm = getUsageStatsManager(context);
    Calendar calendar = Calendar.getInstance();
    long endTime = calendar.getTimeInMillis();
    calendar.add(Calendar.DAY_OF_YEAR, -1);
    long startTime = calendar.getTimeInMillis();

    List<UsageStats> usageStatsList = usm.queryUsageStats(UsageStatsManager.INTERVAL_DAILY,startTime, endTime);
    return usageStatsList;
}

Eu tenho um alarme que dispara diariamente pouco antes da meia-noite e usa os status de consulta e, em seguida, armazena os dados retornados. No começo, tudo parecia estar funcionando bem e eu estava obtendo resultados do pacote e seu tempo ativo, no entanto, adicionei uma função que verificaria os resultados a cada hora e foi aqui que fiz uma descoberta estranha.

Os resultados deUsageStatsManagerparecia estar sendo redefinido em horários diferentes, em vez de à meia-noite, o que eu esperava, considerando que estava usandoINTERVAL_DAILY como um parâmetro de pesquisa.

A partir dos dados que salvei, os resultados do 'time' do pacote parecem estar sendo redefinidos em (Tempos difíceis):

3 horas da manhãMeio-dia15:00Meia-noite

Percebo que existe uma correlação entre quando os tempos do pacote são redefinidos, mas isso deve acontecer?

Já vi o seguinte tópico e é daí que recebo muitas informações:Como usar o UsageStatsManager?

Consequentemente:Android UsageStatsManager produzindo saída errada? Nos comentários menciona que os dados retornados dequeryUsageStats não pode ser confiável e resultados aleatórios estão sendo retornados.

Estou perdendo algo simples ou éUsageStatsManager não está funcionando corretamente?

questionAnswers(4)

yourAnswerToTheQuestion