private void init()

in sample/src/main/java/com/facebook/battery/sample/BatteryApplication.java [70:115]


  private void init() {
    // Note -- Creating a collector instance that's shared across the application can be fairly
    //         useful. You can set it up and hook up all the individual metrics collectors,
    //         tweaking them once.
    CompositeMetricsCollector.Builder collectorBuilder =
        new CompositeMetricsCollector.Builder()
            .addMetricsCollector(TimeMetrics.class, new TimeMetricsCollector())
            .addMetricsCollector(CpuFrequencyMetrics.class, new CpuFrequencyMetricsCollector())
            .addMetricsCollector(CpuMetrics.class, new CpuMetricsCollector())
            .addMetricsCollector(NetworkMetrics.class, new NetworkMetricsCollector(this));
    if (Build.VERSION.SDK_INT >= 24) {
      collectorBuilder.addMetricsCollector(
          HealthStatsMetrics.class, new HealthStatsMetricsCollector(this));
    }
    mMetricsCollector = collectorBuilder.build();

    // Note -- The Reporter and Serializer mimic the collector; they were mainly split out into
    //         separate modules to keep it simple to include only what you really needed.
    mMetricsReporter =
        new CompositeMetricsReporter()
            .addMetricsReporter(TimeMetrics.class, new TimeMetricsReporter())
            .addMetricsReporter(CpuMetrics.class, new CpuMetricsReporter())
            .addMetricsReporter(CpuFrequencyMetrics.class, new CpuFrequencyMetricsReporter())
            .addMetricsReporter(NetworkMetrics.class, new NetworkMetricsReporter());
    if (Build.VERSION.SDK_INT >= 24) {
      mMetricsReporter.addMetricsReporter(
          HealthStatsMetrics.class, new HealthStatsMetricsReporter());
    }

    mMetricsSerializer =
        new CompositeMetricsSerializer()
            .addMetricsSerializer(TimeMetrics.class, new TimeMetricsSerializer())
            .addMetricsSerializer(CpuMetrics.class, new CpuMetricsSerializer())
            .addMetricsSerializer(CpuFrequencyMetrics.class, new CpuFrequencyMetricsSerializer())
            .addMetricsSerializer(NetworkMetrics.class, new NetworkMetricsSerializer());
    if (Build.VERSION.SDK_INT >= 24) {
      mMetricsSerializer.addMetricsSerializer(
          HealthStatsMetrics.class, new HealthStatsMetricsSerializer());
    }

    // Note -- The stateful collector is a useful abstraction that maintains state about when it
    //         was last triggered, making it simple to observe changes since the last call.
    //         It's a very simple piece of code to reduce boilerplate, you should check out the
    //         underlying source code.
    mStatefulCollector = new StatefulSystemMetricsCollector<>(mMetricsCollector);
  }