in metrics/src/main/java/com/facebook/battery/metrics/healthstats/HealthStatsMetrics.java [377:404]
private static void readKeyNames() {
try {
Class[] healthStatsClasses = {
UidHealthStats.class,
PidHealthStats.class,
ProcessHealthStats.class,
PackageHealthStats.class,
ServiceHealthStats.class
};
Class annotationClass = Class.forName("android.os.health.HealthKeys$Constant");
for (Class clazz : healthStatsClasses) {
Field[] fields = clazz.getFields();
for (Field field : fields) {
if (field.isAnnotationPresent(annotationClass)) {
sKeyNames.put(field.getInt(null), field.getName());
}
}
}
return;
} catch (IllegalAccessException iae) {
SystemMetricsLogger.wtf(TAG, "Unable to read constant names", iae);
} catch (ClassNotFoundException cnfe) {
SystemMetricsLogger.wtf(TAG, "Unable to find constant annotation", cnfe);
}
// Mark as attempted and invalid
sKeyNames.put(-1, "Unable to read");
}