android - 如何删除从 FirebasePerformance 开始的跟踪

标签 android performance firebase memory-leaks firebase-performance

我们希望有一个系统,其中有多种类型的跟踪(在enum中声明),并且我们假设每种类型的跟踪在所有跟踪的生命周期中都是该类型的跟踪。我们使用这样的东西:

public class FirebasePerfAnalytics {

  private ConcurrentHashMap<TraceType, Trace> traces = new ConcurrentHashMap<>();

  public Trace startTrace(TraceType traceType) {
    Trace trace = traces.get(traceType);
    if (trace == null) {
      trace = FirebasePerformance.getInstance().newTrace(traceType.name());
      Trace oldTrace = traces.put(traceType, trace);
      if (oldTrace == null) {
        trace.start();
      }
    }
    return trace;
  }

  public void stopTrace(TraceType traceType) {
    Trace trace = traces.remove(traceType);
    if (trace != null) {
      trace.stop();
    }
  }

  public enum TraceType {
   // some types
  }
}

在某些情况下,跟踪将被打开但从未关闭(因为我们要测试的实际任务未正确完成)。我们不想跟踪此类错误情况,但我们也不想泄漏这些小 Trace 对象。

有没有办法在不调用 Trace.stop() 方法的情况下将它们从 Firebase 性能跟踪列表中删除?

最佳答案

只需清除对 Trace 对象的所有引用并让它被垃圾收集即可。无论如何,在您调用 stop() 之前,Trace 不会真正执行任何操作。

关于android - 如何删除从 FirebasePerformance 开始的跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48803616/

相关文章:

android - 如何在 Android 中使用内容解析器插入文件?

android - ListView 适配器不能应用于 Modal 类

android - "Activity A implements X"表示不受支持的 API 级别

sql - 更快的 sqlite3 查询?我需要尽快处理 100 万行

Java编码效率。 JRadioButton 对象和 ItemListener 交互

performance - codility GenomicRangeQuery 算法速度比较 Java 与 Swift

java - 如何使用 DatePickerDialog 从 DialogFragment 设置文本

firebase - 如何将 socket.io 附加到 google firebase 应用程序功能?

firebase - 使用 Firebase 按名称属性获取用户

ruby-on-rails-4 - 对 Firebase 的快速多次调用使 Rails 崩溃