如何在android中以编程方式跟踪应用程序使用时间?

时间:2015-10-01 06:42:51

标签: android usage-statistics usageevents

我想知道用户使用我的应用程序的时间。因此,每当他打开我的应用程序时,我想知道时间,每当他关闭应用程序时,我想知道时间。当用户关闭应用程序时,我想将使用时间发送到服务器。如何在android中跟踪使用时间?

2 个答案:

答案 0 :(得分:1)

我会放置数据loges gem 'oauth', github: 'ministrycentered/oauth-ruby' onResume方法。并且在每个onPause附加到onPause或某个数据库的使用时间以及创建或打开互联网时的要求时,我会发送使用情况统计信息。

通过这种方式,您可以跟踪每个活动的使用情况。

不确定是否存在某些方框方法。

答案 1 :(得分:0)

我在下面提到的方法是一种非常有效的方法,可以让用户在android系统中花费总时间。实际上,我也使用这种方法来奖励我的用户所花费的时间。首先,您需要自定义 ActivityLifecycleCallbacks ,它负责触发应用程序开始启动和停止的时间。您只需将 ActivityLifecycleCallbacks 注册到您的应用程序实例。这还将考虑是否有任何用户暂停了该应用程序,因此您无需考虑它。自定义的 ActivityLifecycleCallbacks 类为-

public class ApplicationTimeSpentTracker implements Application.ActivityLifecycleCallbacks {
    private int activityReferences = 0;
    private boolean isActivityChangingConfigurations = false;
    private long startingTime;
    private long stopTime;

    @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());

如果您需要详细信息,请在这里post