public synchronized boolean getSnapshot()

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;
  }