Вызов Firebase Analytic getInstance() каждый раз против хранения экземпляра как статической переменной в классе Application

Я пытаюсь решить, какой из следующих способов подходит для этого:

  • Вызов FirebaseAnalytics.getInstance(Context) из всех действий, фрагментов и служб, из которых я регистрирую событие.

или

  1. Вызов FirebaseAnalytics.getInstance(Context) один раз из класса Application и сохранение его как общедоступной статической переменной. Тогда, оттуда, мне нужно это, я могу назвать `MyAppClass.mFirebaseAnalytics.logEvent() '.

Будет ли какой-либо из вышеперечисленных методов оказывать нежелательное влияние на события, которые автоматически собираются и/или у кого-либо из них есть коэффициент усиления эффективности над другим?

Большое спасибо!

Ответ 1

В документации указано:

public static FirebaseAnalytics getInstance (контекст контекста)

Возвращает однопользовательский интерфейс FirebaseAnalytics.

Поэтому я не вижу какой-либо конкретной причины, по которой вы не можете просто иметь экземпляр singleton в своем коде. При любом подходе не будет заметного повышения эффективности. Если вы изучаете второй вариант, возможно, стоит подумать об этом с помощью инъекции зависимостей и простой оберткой вокруг экземпляра analytics, чтобы повысить тестируемость вашего кода.