Android: UsageStatsManager gibt keine korrekten Tagesergebnisse zurück
Ich versuche abzufragenUsageStats
vonUsageStatsManager
, mit dem Ziel, alle App-Pakete zurückzugeben, die täglich und wie lange verwendet wurden.
Der Code
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;
}
Ich habe einen Alarm, der täglich kurz vor Mitternacht ausgelöst wird und die Usagestats abfragt und dann die zurückgegebenen Daten speichert. Anfangs schien alles in Ordnung zu sein und ich erhielt Paketergebnisse und deren aktive Zeit. Ich fügte jedoch eine Funktion hinzu, die die Ergebnisse stündlich prüfte, und hier machte ich eine merkwürdige Entdeckun
Die Ergebnisse vonUsageStatsManager
schien zu unterschiedlichen Zeiten zurückgesetzt zu werden, anstatt um Mitternacht, was ich erwartet hätte, wenn ich @ verwendet hättINTERVAL_DAILY
als Suchparameter.
Von den Daten, die ich im Paket gespeichert habe, werden die 'Zeit'-Ergebnisse scheinbar um (@ zurückgesetzrobe Zeit):
3 Uhr morgenMitta3 Uhr nachmittagMitternachIch weiß, dass es eine Korrelation zwischen dem Zurücksetzen der Paket-Timings gibt, aber soll das passieren?
Ich habe bereits den folgenden Thread gesehen und dort habe ich viele meiner Informationen erhalten:Wie wird UsageStatsManager verwendet?
Folglich:Android UsageStatsManager produziert falsche Ausgabe? In den Kommentaren wird erwähnt, dass die Daten von @ zurückgegeben wurdequeryUsageStats
kann nicht als vertrauenswürdig eingestuft werden und es werden zufällige Ergebnisse zurückgegeben.
Bin ich etwas einfach fehlt oder istUsageStatsManager
funktioniert nicht richtig?