【问题标题】:How to remove trace started with FirebasePerformance如何删除从 Firebase 性能开始的跟踪
【发布时间】:2018-07-25 23:54:09
【问题描述】:

我们希望有一个系统,其中有多种类型的跟踪(在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 性能跟踪列表中删除它们?

【问题讨论】:

    标签: android performance firebase memory-leaks firebase-performance


    【解决方案1】:

    只需清除对 Trace 对象的所有引用并让它进行垃圾收集。在您调用 stop() 之前,Trace 不会真正做任何事情。

    【讨论】:

    • 那么,FirebasePerformance 库中没有地方可以存储打开的 Trace 的链接?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    相关资源
    最近更新 更多