web-dev-qa-db-fra.com

Comment suivre l'utilisation des applications sur Android? Comment détecter le lancement d'une activité?

Je dois suivre l'utilisation de l'application dans Android comme la façon dont AppUsage le fait (c'est-à-dire suivre le nombre de lancements d'applications et le temps passé à les utiliser). Ce que je prévois de faire, c'est d'enregistrer l'heure de début lorsqu'une application est lancée, puis obtient l'heure de fin lorsqu'une application est suspendue ou arrêtée. Dans LogCat, je peux voir les journaux d'activité en cours de démarrage. J'ai regardé les diffusions système disponibles, je ne sais pas s'il y a quelque chose qui diffuse chaque fois qu'une activité est lancée. En gros, comment détecter le lancement d'une activité?

Modifier: De plus, Android dispose également d'un système de statistiques d'utilisation disponible en interne qui peut être trouvé dans l'application Pièces détachées ou lorsque *#*#4636#*#* est composé (Test -> Statistiques d'utilisation)

22
sofiaguyang

Nous pouvons maintenant accéder à l'historique d'utilisation des applications sur un appareil Android avec la nouvelle API Android.app.usage publiée dans le cadre de Android 5.0 API. Le système collecte les données d'utilisation par application, agrégeant les données sur des intervalles quotidiens, hebdomadaires, mensuels et annuels

Pour chaque application, le système enregistre les données suivantes:

La dernière fois que l'application a été utilisée La durée totale pendant laquelle l'application a été au premier plan pendant cet intervalle de temps (par jour, semaine, mois ou année) Horodatage capturant lorsqu'un composant (identifié par un nom de package et d'activité) est déplacé vers avant-plan ou arrière-plan pendant une journée Capture d'horodatage lorsqu'une configuration de périphérique a changé (par exemple lorsque l'orientation du périphérique a changé en raison de la rotation)

Refr: http://developer.Android.com/reference/Android/app/usage/package-summary.html

13
android.fryo

Fondamentalement, comment détecter le lancement d'une activité?

Non. Il n'y a rien dans le Android SDK pour "l'heure de début lorsqu'une application est lancée" ni "l'heure de fin lorsqu'une application est suspendue ou arrêtée".

Ce que l'application que vous citez est probablement en train de perdre beaucoup de temps CPU, de RAM et d'autonomie, interrogeant ActivityManager en continu.

Gardez à l'esprit que ce que vous proposez de suivre, si vous prévoyez que quelqu'un d'autre que l'utilisateur y accède, limite les violations de la vie privée du type qui a causé à CarrierIQ de nombreux problèmes.

6
CommonsWare