Flurry Analytics вне Android Activity

В текущем проекте я использую «вспомогательный» класс для вызовов API, который не расширяет Activity. Этот вспомогательный класс вызывается из действия, в котором сеанс Flurry запускается и останавливается, как это предлагается. Можно ли делать вызовы Flurry прямо из этого вспомогательного класса? Я хочу сказать да, потому что сессия Flurry уже началась как часть текущей активности, но я не уверен.

Я бы предпочел регистрировать теги Flurry сразу после получения результата вызова API, а не проверять сообщение о результате снова в действии, просто чтобы мне не приходилось дублировать часть логики.

Будет ли это работать? Есть ли лучший подход?


person Kyle Clegg    schedule 07.05.2012    source источник


Ответы (2)


ОТРЕДАКТИРОВАНО. СМОТРИ НИЖЕ.

Спасибо Джорди. В итоге я воспользовался вашим предложением передать действие в конструктор вспомогательного класса, установить локальную переменную действия и создать метод для регистрации тега Flurry с использованием переменной действия.

/**
 * Logs the Flurry tag using the act that was passed into the constructor
 */

// EDITED - DON'T USE THIS ANYMORE

private void logFlurryTag(String s) {

    FlurryAgent.onStartSession(act, "XXXXXXXXXXXXXXXXXXXXX");
    FlurryAgent.logEvent(s);
    FlurryAgent.onEndSession(act);
}

Я считаю, что это должно работать правильно, но я не дождался, чтобы увидеть, начали ли уже появляться теги Flurry.

*** 5 сентября 2012 г. ***

По рекомендации spacemanaki я решил переработать свою логику, включив регистрацию событий Flurry в действиях, а не во вспомогательных классах. На самом деле это не было слишком большой дополнительной работой, и я убедился, что о событиях сообщается. Это также кажется более безопасным, чем запуск и остановка сеанса шквала одним методом.

person Kyle Clegg    schedule 07.05.2012
comment
Эй, я не рекомендую вызывать onStartSession и onEndSession таким образом, потому что вы можете в конечном итоге раздуть данные сеанса, что приведет к неточным метрикам. Например, если бы между двумя вызовами logFlurryTag была задержка в 10 секунд, у вас было бы два сеанса вместо одного. Если вы действительно хотите обернуть FlurryAgent вспомогательным классом, я бы рекомендовал добавить методы, которые обертывают onStartSession и onEndSession, а затем вызывать их из методов жизненного цикла Activity onStart и onStop. (отказ от ответственности: я работаю над Android SDK во Flurry) - person michiakig; 07.05.2012
comment
Отличный момент. Я переработаю это и обновлю свое решение тем, что я в конечном итоге использую. Спасибо! - person Kyle Clegg; 08.05.2012

Вашему вспомогательному классу и/или используемому методу нужен параметр Activity, чтобы вы могли отправить это Activity в Flurry. то есть

Класс активности:

 Helper helper = new Helper();
 helper.helping_method(this);

Вспомогательный класс:

 public void helping_method (Activity activitat){
      FlurryAgent.onStartSession(activitat, "xxxxxxxxxxxxxxxxxx");
      FlurryAgent.onEvent("HELPING METHOD");

Вы можете сделать то же самое при создании помощника и сохранить переменную Activity как переменную класса, чтобы использовать ее при необходимости.

person Jordi    schedule 07.05.2012