#android #firebase #firebase-analytics
#Android #firebase #firebase-аналитика
Вопрос:
Я пытаюсь решить, какой из следующих способов является правильным для этого:
- Вызов
FirebaseAnalytics.getInstance(Context)
из каждого действия, фрагмента и службы, из которых я регистрирую событие.
или
- Вызов
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