in metrics/src/main/java/com/facebook/battery/metrics/wakelock/WakeLockMetricsCollector.java [183:216]
public synchronized boolean getSnapshot(WakeLockMetrics snapshot) {
checkNotNull(snapshot, "Null value passed to getSnapshot!");
if (!mIsEnabled) {
return false;
}
updateWakeLockCounts();
snapshot.acquiredCount = mTotalWakeLocksAcquired;
snapshot.heldTimeMs =
mWakeLocksHeldTimeMs
+ (mActiveWakeLocks > 0 ? SystemClock.uptimeMillis() - mWakeLockAcquireTimeMs : 0);
if (snapshot.isAttributionEnabled) {
snapshot.tagTimeMs.clear();
for (int i = 0, size = mActiveWakeLockDetails.size(); i < size; i++) {
WakeLockDetails details = mActiveWakeLockDetails.get(i);
long heldTimeMs = details.getHeldTimeMs();
String tag = details.tag;
Long existingValue = snapshot.tagTimeMs.get(tag);
snapshot.tagTimeMs.put(tag, (existingValue == null ? 0 : existingValue) + heldTimeMs);
}
for (int i = 0, size = mPrevWakeLockMs.size(); i < size; i++) {
String tag = mPrevWakeLockMs.keyAt(i);
Long existingValue = snapshot.tagTimeMs.get(tag);
snapshot.tagTimeMs.put(
tag, (existingValue == null ? 0 : existingValue) + mPrevWakeLockMs.valueAt(i));
}
}
return true;
}