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

#android #firebase #firebase-analytics

#Android #firebase #firebase-аналитика

Вопрос:

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

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

или

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

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

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

Комментарии:

1. Выберите правильный ответ.

2. @fahmy У вас был какой-нибудь шанс выяснить разницу в использовании 1 и 2? Я использую Firebase версии 10.2.0. И, глядя на использование контекста внутри декомпилированных классов Firebase, я вижу, что контекст используется только для получения контекста приложения. Для activity и прочего есть метод firebaseAnalytics.setCurrentScreen , в котором мы можем назвать activity и прочее. Итак, я предполагаю, что сейчас достаточно использовать контекст приложения, но я его еще не тестировал.

3. @laaptu Нет, кроме приведенного ниже ответа, у меня нет никакой новой информации по этому поводу.

4. Вам нужно быть немного осторожным, потому что к нему можно получить доступ MyAppClass.mFirebaseAnalytics , когда оно все еще равно null

Ответ №1:

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

общедоступный статический FirebaseAnalytics getInstance (контекстный контекст)

Возвращает одноэлементный интерфейс FirebaseAnalytics.

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

Комментарии:

1. Я обеспокоен тем, что Firebase может использовать контекст для получения информации о времени жизни или потоке приложения. Во всех руководствах, которые я прочитал, указано, что он должен быть активирован.

2. Ответ на комментарий джаеффкея: если это одноэлементный элемент, и вы не передаете владельца жизненного цикла, почему важно, где вы его инициализируете? Просматривая документы, я вижу, что уже есть некоторые автоматически собранные события support.google.com/firebase/answer/6317485