web-dev-qa-db-ja.com

毎回FirebaseAnalyticのgetInstance()を呼び出すのではなく、インスタンスを静的変数としてApplicationクラスに保存する

私は次のうちどれがこれを行うための適切な方法であるかを決定しようとしています:

  1. イベントをログに記録しているすべてのアクティビティ、フラグメント、およびサービスからFirebaseAnalytics.getInstance(Context)を呼び出します。

または

  1. ApplicationクラスからFirebaseAnalytics.getInstance(Context)を1回呼び出し、それをパブリック静的変数として保持します。次に、これが必要な場所から、「MyAppClass.mFirebaseAnalytics.logEvent()」を呼び出すことができます。

上記の方法のいずれかが、自動的に収集されるイベントに望ましくない影響を与えるか、および/またはそれらのいずれかが他方よりも効率が向上するでしょうか?

どうもありがとう!

26
fahmy

ドキュメント の状態:

public static FirebaseAnalytics getInstance(コンテキストコンテキスト)

シングルトンFirebaseAnalyticsインターフェースを返します。

したがって、コードにシングルトンインスタンスを含めることができない特別な理由はわかりません。どちらのアプローチでも、目立った効率の向上はありません。 2番目のオプションを検討している場合は、依存性注入と分析インスタンスの単純なラッパーを使用してこれを実行し、コードのテスト容易性を高めることを検討する価値があります。

7
bcpettifer