Как программно отслеживать время использования приложения в Android?

Я хочу знать, сколько времени пользователь использует мое приложение. Поэтому, когда он открывает мое приложение, я хочу знать время, а когда он закрывает приложение, я хочу знать время. Когда пользователь закроет приложение, я хочу отправить время использования на сервер. Как я могу отслеживать время использования в Android?

1 ответ

Решение

Я бы поставил данные ложи onResume а также onPause методы. и на каждый onPause добавить время использования к SharedPrefrences или какую-то базу данных и о требованиях при создании или при включении интернета я бы отправлял статистику использования.

Таким образом, вы можете отслеживать каждое использование деятельности.

Не уверен, существует ли какой-либо из методов box.

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

public class ApplicationTimeSpentTracker implements Application.ActivityLifecycleCallbacks {
    private int activityReferences = 0;
    private boolean isActivityChangingConfigurations = false;
    private long startingTime;
    private long stopTime;
   /**startingTime is the UNIX timestamp (though I increased readability by converting into millisecond to second) your app is being foregrounded to the user and stopTime is when it is being backgrounded (Paused)*/
    @Override
    public void onActivityCreated(Activity activity, Bundle bundle) {
    }

    @Override
    public void onActivityStarted(Activity activity) {
        if (++activityReferences == 1 && !isActivityChangingConfigurations) {
        
            // App enters foreground
            startingTime=System.currentTimeMillis()/1000; //This is the starting time when the app began to start
        }
    }

    @Override
    public void onActivityResumed(Activity activity) {
    }

    @Override
    public void onActivityPaused(Activity activity) {
    }

    @Override
    public void onActivityStopped(Activity activity) {
        isActivityChangingConfigurations = activity.isChangingConfigurations();
        if (--activityReferences == 0 && !isActivityChangingConfigurations) {
        
            // App enters background
            stopTime = System.currentTimeMillis() / 1000;//This is the ending time when the app is stopped 
            
            long totalSpentTime= stopTime-startTime; //This is the total spent time of the app in foreground. Here you can post the data of total spending time to the server.
        }
    }

    @Override
    public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
    }

    @Override
    public void onActivityDestroyed(Activity activity) {
    }
}

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

    activity.getApplication().registerActivityLifecycleCallbacks(new ApplicationTimeSpentTracker());

Вот мой пост, если вам нужны подробности

Другие вопросы по тегам