获取当前的应用运行时间

时间:2016-08-20 08:14:06

标签: android

我想知道详细信息 - 我的应用在一天中有多长时间处于活动状态? 我不能明确存储开始时间和结束时间,因为应用程序部署在插件pc上(没有电池,因此不会调用onDestroy)。 有没有办法通过使用系统调用获取应用程序运行时间信息?

4 个答案:

答案 0 :(得分:1)

API级别21提供UsageStatsManager。它可用于检查您的应用是否处于活动状态或获取应用使用情况统计信息。

  

注意:此API需要android.permission.PACKAGE_USAGE_STATS权限,这是系统级权限,不会授予第三方应用。但是,声明权限意味着有意使用API​​,设备用户可以通过“设置”应用程序授予权限。

<强> queryUsageStats

List<UsageStats> queryUsageStats (int intervalType, long beginTime, long endTime)

  

获取给定时间范围的应用程序使用情况统计信息,按指定的时间间隔汇总。返回的列表将包含每个包的UsageStats对象,该对象具有间隔的数据,该间隔是给定时间范围的子集。

以下是示例应用(在其他问题中找到)

https://github.com/ColeMurray/UsageStatsSample

How to use UsageStatsManager?

答案 1 :(得分:1)

你可以自己做吗?创建一个额外的后台线程,在Application单例类启动时通过调用while循环中的onCreate()运行,您可以在线程中添加waitsleep你想要的,或者你可以只使用TimerTask,将你的值存储到你的变量中并将它们保存在sharedPreference中,只是为了incase。

然后随时打电话。

答案 2 :(得分:1)

您可以使用此代码了解时间的运行情况....

声明变量......

long startTime, endTime ,duration ;

在onStart()方法中执行此操作....

@Override
protected void onStart() {
    super.onStart();
     startTime = System.currentTimeMillis();
}

在onStop()方法中执行此操作....

@Override
protected void onStop() {
    super.onStop();
   endTime = System.currentTimeMillis();   
}

并计算结果.....

duration = (endTime - startTime); 

然后每次存储持续时间并将其添加到其他人

以毫秒为单位的时间......

答案 3 :(得分:0)

不,没有办法做到这一点。 即便如此,如果不调用onDestroy(在任何情况下都不可靠,因为每次活动被销毁时都不会调用它),您可以在{{1}中存储“起始值”您的主onResume并计算调用Activity时的使用时间。

然后将此值添加到当天的总使用量中。