Je travaille sur un android personnalisé pour mon mémoire de master qui est basé sur CM12.1.Envoyer BroadcastIntent dans application.onCreate() entraîne le démarrage à jamais
Le cas d'utilisation de la ROM personnalisée capture des données d'utilisation pour des applications arbitraires, y compris par ex. démarrage, arrêt et appels à différentes ressources du système. Tout cela devrait arriver avec l'utilisation normale du téléphone. Actuellement, je veux utiliser la classe Application afin qu'elle envoie une intention de diffusion dans sa méthode onCreate().
[...]
class Application extends ContextWrapper implements ComponentCallbacks2 {
[...]
public void onCreate() {
// fire intent for capturing
Bundle bundle = new Bundle();
if (mLoadedApk != null) {
bundle.putString("PACKAGE_NAME", mLoadedApk.getApplicationInfo().packageName);
bundle.putLong("CREATION_DATE", System.currentTimeMillis());
}
Intent intent = new Intent(Intent.ACTION_START_APP) // custom action added to Intent.java
.putExtras(bundle);
getApplicationContext().sendBroadcastAsUser(intent, android.os.Process.myUserHandle());
}
[...]
}
De cette façon, je pouvais connecter l'heure exacte quand une application démarre, mais malheureusement mes résultats d'approche dans l'appareil ne pas démarrer plus. Après avoir flashé l'image personnalisée et démarré, je suis bloqué sur l'animation de démarrage cyanogène (qui s'anime, elle n'est pas figée). Une image de travail quitte l'animation et commence Android après environ 2 minutes (aussi premier démarrage après flash), mais ma rom avec Application.java personnalisé montre encore l'animation de démarrage après> 15 minutes.
Je sais qu'il serait possible de vérifier périodiquement les applications en cours d'exécution avec ActivityManager, mais comme cela est inexact et empêcherait l'unité centrale de passer en mode d'économie d'énergie, je souhaite utiliser cette approche.
Si je décommode le sendBroadcast, tout fonctionne correctement. Donc, je suppose que le problème est que ActivityManagerNative ne fonctionne pas encore mais je suis incertain à ce sujet.
Puisque je ne peux pas obtenir les journaux avec adb je ne sais pas à quel moment/pourquoi le démarrage échoue.
Pouvez-vous me dire comment vérifier si tous les prérequis pour l'envoi de demandes sont satisfaits? Alternative Je ne pourrais envoyer mon intention que si le processus de démarrage du périphérique est terminé et analyser toutes les applications ouvertes dans mon BroadcastReceiver correspondant mais je ne sais pas comment (ou même si cela est possible) pour vérifier si le processus de démarrage est terminé.
Merci d'avance.