2010-10-06 22 views
18

Je veux écrire un service pour la plate-forme Android qui est notifié lorsque l'activité actuelle de premier plan change. Fondamentalement, le service doit effectuer certaines tâches uniquement lorsque l'activité supérieure change. Y a-t-il un moyen de s'abonner et d'être averti quand ce genre d'événement se produit? Ou il n'y a aucune possibilité et le service devrait interroger de temps en temps la liste des activités en cours et de vérifier ce qui est l'activité de premier plan? Solution non préférable ...Comment être averti lorsque l'activité de premier plan (en haut) (application) change

+0

Sur quelle plate-forme sont que vous essayez d'écrire votre service? – Guillaume

+0

Plateforme Android 2.1 – Alex

+2

Avez-vous déjà trouvé une solution pour cela? J'essaie de faire quelque chose de similaire. – harbinja

Répondre

4

AFAIK il y a deux façons pour faire ça.

  1. Démarrer un service et surveiller la pile d'activité, vous pouvez le vérifier here
  2. utiliser un service d'accessibilité, vous pouvez trouver une solution here
+0

Notez que la technique liée à l'interrogation pour l'activité en cours ne fonctionne pas sous Android 5+. – Sam

+0

@Sam Alors, comment fonctionne l'application qui protège l'application sélectionnée? Comment ils détectent quand une application vient et au premier plan? Merci –

+0

@Astrount, je ne sais pas ce que les développeurs utilisent ces jours-ci, mais la dernière fois que j'ai vérifié, l'option 2 dans cette réponse fonctionne toujours dans Android 5. – Sam

1

Vous devez lier chaque activité au service et vous aurez savoir quelle activité est en cours d'exécution.

essayez ceci:

List runningTaskInfos=actvityManager.getRunningTasks(1).get(i).topActivity .getPackageName(); 

cette méthode donnera les informations du nom de package d'activité qui est au premier plan ..............

+1

Eh bien, ce n'est pas une solution, peut-être que je me suis trompé, je veux que le service soit informé de l'application en cours (il peut s'agir de l'une des applications installées) et comparer avec une liste prédéfinie c'est sur la liste de faire un peu de travail. – Alex

+0

Ah ok, vous avez écrit Activity donc j'ai compris qu'il ne s'agissait que d'une application. Je ne sais vraiment pas comment faire ce que vous voulez faire désolé – fedj

+0

Quelqu'un d'autre :)? – Alex