J'ai utilisé la méthode onTaskRemoved()
dans un service pour détecter le moment où une application a été supprimée de la liste RÉCENTE de l'appareil en la faisant glisser. J'effectue une journalisation et d'autres opérations qui doivent avoir lieu lorsque cela se produit. Cela fonctionne parfaitement.
J'ai ensuite vérifié cette méthode dans un appareil HUAWEI exécutant Android 6.0. La méthode n'est jamais appelée. J'ai également ajouté un appel Log.d et comme prévu, ce journal n'est jamais apparu. La même chose se produit sur un Dispositif XIOMI.
Des idées pourquoi cela se produit et comment résoudre ce problème? Ou existe-t-il un autre moyen de détecter que l'application a été supprimée de la liste RÉCENTE sans s'appuyer sur onTaskRemoved()
?
Merci
Lorsque l'utilisateur a installé votre application sur un appareil xiaomi, redirigez l'utilisateur vers l'activité de démarrage automatique et dites à l'utilisateur d'activer:
if (Build.BRAND.equalsIgnoreCase("xiaomi")) {
Intent intent = new Intent();
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
startActivity(intent);
}
Utilisez le code ci-dessus pour lancer la page d'activité de démarrage automatique sur Xiaomi
Sur certains appareils (certains LG, Huawei, Xiaomi et autres), votre application doit être ajoutée manuellement à une liste d '"applications protégées" ou "d'applications autorisées à s'exécuter en arrière-plan" pour Android pour redémarrer les services STICKY. Si votre application n'a pas été ajoutée manuellement à cette liste, Android tue simplement vos processus et ne les redémarre pas et n'appelle pas non plus onTaskRemoved()
. Ceci permet de préserver la durée de vie de la batterie en limitant le nombre d'applications pouvant avoir des services STICKY en arrière-plan.
Sur ces appareils, vous devriez voir une page dans les "Paramètres", parfois sous "gestion de l'alimentation", parfois à d'autres endroits, où vous devez ajouter explicitement votre application. Vous devrez également dire à vos utilisateurs d'ajouter explicitement votre application à cette liste.
J'ai utilisé la méthode onTaskRemoved () dans un service pour détecter le moment où une application a été supprimée de la liste RECENT de l'appareil en la balayant.
En donnant plus de lumière à la réponse fournie par David Wasser
Ce n'est pas nouveau sur Xiaomi parce que Xiaomi a une fonctionnalité appelée autorisation d'application, où un utilisateur doit autoriser l'application à démarrer automatiquement (Service). Dans votre cas, le Service
n'est pas appelé, une fois qu'il est terminé depuis la pile.
Allez comme ceci et autorisez votre application à démarrer automatiquement:
Settings > permissions > Autostart
Dans Mon Huawei, j'ai également rencontré un problème, allez simplement dans Paramètres => Économie d'énergie => Protéger l'application => trouvez votre application et activez-la .. Le service commencera à fonctionner ..
Avertissement: Ce n'est pas une bonne solution .. C'est le hack
Vous pouvez empêcher l'application de tuer par l'utilisateur
Dans votre manifeste -> à l'intérieur de la balise d'activité -> Ajouter la ligne suivante
Android: excludeFromRecents = "true"
Votre application n'apparaît pas dans l'historique des applications récentes. L'utilisateur ne peut donc pas tuer l'application.