首页 > 解决方案 > 是否有一个应用程序级的进入和退出点可以用来跟踪我的 Android 应用程序运行的累积时间?

问题描述

我的任务是记录我们的 Android 应用程序在设备上运行的确切时间,包括前台后台的所有时间。

我想我会在 中设置一个开始时间SharedPreferences,然后根据它进行计算。我认为我会覆盖该onDestroy()方法并计算正常运行时间并将该数据存储在其中SharedPreferences

然后我记得我们的应用程序中有几个活动,如果一个活动的onDestroy()方法被调用,我们的其他活动仍然可以运行。

我开始寻找可以使用的应用程序级别onCreate()onDestroy()但我没有成功;我的第一反应是说“没有”。

那么,是否有一个应用程序级别的入口和出口点可以用来跟踪我们的应用程序运行的累积时间、前台和后台?

谢谢!

标签: android

解决方案


我认为你在正确的轨道上。我建议使用 BaseAvtivity 类,并让您的所有活动扩展该类。这样 Baseactivity 的 onDestroy 总是被调用。按照您在问题中描述的方式在 BaseActivity 中执行您的时间管理逻辑。另一个建议是使用您自己的 Application 类。

static class ActivityLifecycle implements ActivityLifecycleCallbacks {

    Activity currentActivity;

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

    @Override
    public void onActivityStarted(Activity activity) {
        currentActivity = activity;

    }

    @Override
    public void onActivityResumed(Activity activity) {
        currentActivity = activity;
    }

    @Override
    public void onActivityPaused(Activity activity) {

    }

    @Override
    public void onActivityStopped(Activity activity) {
    }

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

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

这样,您可以使用应用程序生命周期方法来计算在应用程序中花费的时间。


推荐阅读