我们希望有一个系统,其中有多种类型的跟踪(在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/