1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firebase Performance Monitoringの2点間計測機能を使ってみる。【Android】

Last updated at Posted at 2018-12-01

FireBasePerformanceMonitoringの機能のひとつに、ある点からある点までの2点間を計測するTrace機能があります。
Android 向け Firebase Performance Monitoring を使ってみる

同じクラス内であれば、newTrace("")してオブジェクトを生成し、.startTrace() → .stopTrace()をすればいいですが、

  • 別のクラスを跨ぐとき
  • Activity・Fragment間を移動するとき

を計測するケースを考えると、ユーティリティっぽく使える方が保守性・拡張性があります。
また、ActivityにTraceオブジェクトを持たせて、コールバックを受け取るなりしてstop()するのもあまりやりたくないのも理由ですね。

SingletonとEnumで作ってみましたので、アウトプットがてら共有します。

PerformanceMontoringSample.java

public class PerformanceMonitoringSample {
    private static PerformanceMonitorSample performanceMonitorSample;
    private final Map<TraceName, Trace> traceMap = new HashMap<>();

    public enum TraceName {
        SAMPLE_ONE("sample_one"),
        SAMPLE_TWO("sample_two");

        private final String traceInstanceName;

        TraceName(String traceInstanceName) {
            this.traceInstanceName = traceInstancName;
        }
    }

    private PerformanceMonitoringSample() {
    }

/**
 * インスタンスを取得
 */
    public static PerformanceMonitoringSample getInstance() {
        if (performanceMonitorSample == null) {
            performanceMonitoringSample = new PerformanceMonitoringSample();
            return performanceMonitorSample;
        } else {
            return performanceMonitorSample;
        }
    }

ここまでが

  • EnumでTraceを管理する。
  • コンストラクタ
  • getInstance()で呼び出せるようにする

ですね。

以下、計測開始と終了の処理を書いていきます。

PerformanceMontoringSample.java
    /**
     *計測を開始
     */
    public void startTrace(TraceName traceName) {
        if (traceMap.containsKey(traceName)) {
            return;
        }
        Trace myTrace = = FirebasePerformance.getInstance().newTrace(traceName.traceInstanceName);
        myTrace.start();
        traceMap.put(traceName.traceInstanceName, myTrace);

        }
    }

    /**
     *計測を終了
     */
    public void stopTrace(TraceName traceName) {
         //Map自体のnullチェックが必要かも・・・
         if (traceMap.containsKey(traceName)) {
             traceMap.remove(traceName.traceInstanceName).stop;
            }
        }
    }
}

###使い方
使い方としては、まずgetInstance()でPerformanceMonitoringインスタンスを生成し、計測したい2点間でstart()とstop()をするだけです。
裏でPerformanceMonitoringがうまい事よしなにやってくれるので、分岐だけ網羅しておけば良い感じに計測してくれる&そうそう落ちることはない、はずです・・・。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?