2013-05-06 9 views
7

Ich bin neu bei Android. In meiner Anwendung möchte ich nachverfolgen, wie lange andere Anwendungen (die auf dem Gerät installiert sind) verwendet werden (im Vordergrund).Messen Sie Zeit für Android-Anwendungen

Ist es möglich? Wenn ja, wie?

Vielen Dank im Voraus!

+2

Überprüfen Sie, ob [dies] (http://StackOverflow.com/questions/6064137/Can-android-application-know-when-another-android-application-is-running) Link Ihnen helfen kann. – Hemanth

+0

klicken Sie auf das Wort dies ... es ist ein Hyperlink :) – Hemanth

Antwort

2

Ich denke, dass die einzige Möglichkeit, dies zu tun ist, indem Sie einen Hintergrund-Service verwenden und kontinuierlich suchen, welche App im Vordergrund ist (es ist möglich, mit ActivityManager).

Aber diese Lösung ist teuer in der Batterie

4

Die erste, was, was erforderlich hier bekannt sein wird, was sind die Anwendungen, die im Vordergrund ausgeführt werden:

Sie zur Zeit/Hintergrund-Anwendung mit ActivityManager.getRunningAppProcesses() Vordergrund erkennen können Anruf.

So wird es in etwa so aussehen ::

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

Sie wahrscheinlich dieses heraus auch überprüfen: Determining foreground/background processes.

getElapsedCpuTime() 

diesen article Siehe:

die Zeit durch einen Prozess genommen zu messen seine gegebene Zeit zu laufen, können Sie diese Methode verwenden.

+0

Danke für die Antwort. Ich werde es versuchen! – Unnati

Verwandte Themen