2016-03-05 4 views
3

Je veux obtenir toutes les tâches qui sont en cours d'exécution dans android.J'ai trouvé getRunningTasks dans ActivityManager mais à partir de android-5.0 les getRunningTasks peuvent ne pas donner toutes les tâches (dans mon cas, il est donné l'écran d'accueil et mon application).Comment faire pour obtenir toutes les tâches en cours

De plus, est-il possible de trouver la tâche avec laquelle l'utilisateur interagit actuellement?

Toute aide serait grandement appréciée.

Merci.

Modifier: J'utilise la pièce suivante code.But il me donne un seul processus (qui est mon application) .Même si j'ouvre d'autres applications, il n'est pas montrant them.I suis en cours d'exécution sur ce un Plus2.

@Override 
    protected void onHandleIntent(Intent intent) { 
     new Timer().scheduleAtFixedRate(new TimerTask() { 
      @Override 
      public void run() { 
       getRunningApps(); 
      } 
     }, 0, 1000);//put here time 1000 milliseconds=1 second 
    } 

    public void getRunningApps() { 
     final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
     final List<ActivityManager.RunningAppProcessInfo> recentTasks = activityManager.getRunningAppProcesses(); 

     for (int i = 0; i < recentTasks.size(); i++) 
     { 
      Log.d("Executed app", "Application executed : " +recentTasks.get(i).pkgList[0]+ "\t\t ID: "+recentTasks.get(i).pid+""); 
     } 
    } 

Répondre

2

Utilisez getRunningAppProcesses, qui renverra une liste d'objets RunningAppProcessInfo qui vous fourniront des données sur chaque application en cours d'exécution. Une des informations que vous pouvez récupérer sur l'application est son importance, qui peut avoir une valeur IMPORTANCE_FOREGROUND qui indique que le processus est l'application actuellement active!

Documentation connexe:

getRunningAppProcesses

RunningAppProcessInfo

IMPORTANCE_FOREGROUND

Si cela vous a aidé, ne hésitez pas à appuyer sur cette flèche à gauche :)

+1

Un extrait de code serait bien ... –

0

Si vous n'êtes pas le propriétaire de cette tâche, Android ne vous donnera pas ses informations.

+0

Mais si vous voyez l'application voodoo, ils montrent leur widget de seulement dans certains apps.So je pensais que cela pourrait être possible.But s'il y a un travail autour de ce problème s'il vous plaît me suggérer la voie. – Viking93

-1

Utilisez cette code Ça fonctionne pour moi. Ne pas oublié d'utiliser ListView dans votre fichier Xml.

ListView listView = (ListView) findViewById(R.id.listview); 
     ActivityManager actvityManager = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 
     List<ActivityManager.RunningAppProcessInfo> procInfos = actvityManager.getRunningAppProcesses(); 
     String[] values = new String[procInfos.size()]; 
     final String packageName = "my.application.package"; 
     PackageManager packageManager = getApplicationContext().getPackageManager(); 
     for (int i = 0; i < procInfos.size(); i++) { 
      values[i] = procInfos.get(i).processName; 
     } 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, values); 
     listView.setAdapter(adapter);