Я пытаюсь отслеживать продолжительность сеанса пользователя (с помощью Mixpanel - но этот вопрос не о Mixpanel). Я отправляю событие «AppStart», когда пользователь запускает приложение, и я запускаю таймер. Я отправляю «AppStop», включая продолжительность таймера, когда пользователь останавливает приложение (кнопка «Назад», «История», «Домашняя кнопка» ...) Моя первая мысль заключалась в использовании обратных вызовов жизненного цикла активности, но мое приложение состоит из нескольких и я не хочу отправлять события для переключения между ними. Как бы вы решили этот вопрос?Отслеживание длительности сеанса в android
0
A
ответ
0
Если вы не один уже, создать Android Application
класса, а также использовать registerActivityLifecycleCallbacks
иметь следующий код запуска для всех ваших действий onResume
, и еще один для всех ваших действий :
@Override
public void onActivityResumed(Activity activity) {
if (counter == 0) {
sendEvent("app-start")
}
counter++;
}
@Override
public void onActivityPaused(Activity activity) {
counter--;
if (counter == 0) {
handler.postDelayed(new Runnable() {
public void run() {
if (counter == 0) {
sendEvent("app-stop");
}
}
}, 1000);
}
}
Это не работает: Допустим, вы переключитесь с Activity A на B: A приостанавливается, а затем ПОСЛЕ возобновления B. Ваш код отправит «приложение-старт» каждый раз, когда вы переключитесь на активность – stoefln
, это можно решить, задерживая событие приложения-остановки немного, см. Редактирование. Это не пуленепробиваемый, но мы будем в порядке для 99% случаев. – marmor
Ваш код все еще не работает. Отправляет запуск приложения каждый раз при переключении на другое действие. Что просто логично – stoefln