测量在Android应用程序上花费的时间

我是新来的android。 在我的应用程序中,我想跟踪其他应用程序(安装在设备上)多长时间(在前台)。

可能吗? 如果是,那么如何?

提前致谢!

Solutions Collecting From Web of "测量在Android应用程序上花费的时间"

首先,这里需要了解的是在前台运行的应用程序是什么:

您可以使用ActivityManager.getRunningAppProcesses()调用来检测当前的前景/后台应用程序。

所以,它会看起来像::

  class findForeGroundProcesses extends AsyncTask<Context, Void, Boolean> { @Override protected Boolean doInBackground(Context... params) { final Context context = params[0].getApplicationContext(); return isAppOnForeground(context); } private boolean isAppOnForeground(Context context) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses(); if (appProcesses == null) { return false; } final String packageName = context.getPackageName(); for (RunningAppProcessInfo appProcess : appProcesses) { if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) { return true; } } return false; } } // Now you call this like: boolean foreground = new findForeGroundProcesses().execute(context).get(); 

你也可以检查一下: 确定前景/后台进程 。

要衡量进程运行所需的时间,可以使用以下方法:

 getElapsedCpuTime() 

请参阅这篇文章 。

我认为这是通过使用后台服务,并不断search哪个应用程序在前台(这可能通过使用ActivityManager)来做到这一点的唯一方法。

但是这个解决scheme在电池上是昂贵的