Вопрос: Измерение времени, затраченного на приложения для Android


Я новичок в android. В моем приложении я хочу отслеживать, сколько времени используются другие приложения (которые установлены на устройстве) (на переднем плане).

Является ли это возможным? Если да, то как?

Заранее спасибо!


7


источник


Ответы:


Первое, что нужно знать, это то, что приложения, которые работают на переднем плане:

Вы можете обнаружить в настоящее время приложение переднего плана / фона с помощью 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()  

См. статья  ,


4



Я думаю, что единственный способ сделать это - использовать фоновый сервис и постоянно искать приложение на переднем плане (это возможно с помощью ActivityManager).

Но это решение дорого стоит батареи


2