Android - Как отследить приложение Возобновляется только после выхода и возврата в приложение? - PullRequest
6 голосов
/ 05 мая 2011

У меня есть проблема. Для аналитических целей мне нужно отслеживать, когда приложение (не активность) возобновляется. Проблема, с которой я столкнулся сейчас, заключается в том, что, если я добавлю трекер в событие OnResume действия, оно будет срабатывать каждый раз, когда пользователь переключается между различными действиями.

Как мне этого избежать? Как я могу отследить реальное «Возобновление приложения» (когда пользователь фактически выходит из приложения и возвращается), а не возобновление активности?

Любые идеи с благодарностью. Благодарю.

Ответы [ 3 ]

4 голосов
/ 18 мая 2013

Я столкнулся с той же проблемой и решил ее, создав базовое действие:

public class mActivity extends Activity{

    public static final String TAG = "mActivity";

    public static int activities_num = 0;


    @Override
    protected void onStop() {
        super.onStop();
        activities_num--;
        if(activities_num == 0){
            Log.e(TAG,"user not longer in the application");
        }
    }


    @Override
    protected void onStart() {
        super.onStart();
        activities_num++;
    }
}

Все остальные действия в моем приложении унаследовали mActivity.Когда действие больше не видно, чем вызывается onStop.когда actions_num == 0, тогда все действия не видны (это означает, что пользователь закрыл приложение или оно перешло в фоновый режим).Когда пользователь запускает приложение (или перезапускает его из фона), вызывается onStart (onStart вызывается, когда активность видна), а активность_num> 0. надеется, что это поможет ...

2 голосов
/ 05 мая 2011

Используйте объект Application вашего приложения (см. http://developer.android.com/reference/android/app/Application.html).. Если вы создаете собственный класс Application и настраиваете его в своем файле AndroidManifest.xml, вы можете сделать что-то вроде этого:

  1. Запустите отслеживание в onCreate() объекта Application.
  2. Инструментируйте все свои действия, чтобы их методы onPause() и onResume() сверились с объектом Application и выяснили, являются ли они первым выполненным действием, или еслиони продолжают ранее запущенный экземпляр приложения.
  3. Остановите отслеживание в onDestroy() объекта Application.

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

0 голосов
/ 05 мая 2011

Вместо OnResume () подключите событие OnCreate () вашего основного действия.

...