FredVoyage

App en arrière plan sur HyperOS

J'ai mis en place une application qui permet de faire du traçage GPS. Ce qui est difficile dans cette app, c'est que je veux qu'elle tourne en permanence en arrière plan sur mon téléphone. Or, sur Android, comme sur iPhone, le principe est que le téléphone fonctionne avec les app qui sont utilisées, le but du terminal n'est pas de faire tourner des app en arrière-plan. Pour certaines, des évènement comme un appel entrant ou un message qui arrive va alors les réveiller, mais ici, ce que je cherche, c'est de faire fonctionner l'app, tout le temps, en tâche de fond, pour envoyer périodiquement les données GPS à mon serveur et à la fin, avoir une trace de ma position pendant le trajet (un vol, en général, ou bien un trajet en voiture ou à pied, peu importe).

A l'opposé, les fabricants de mobile ont un objectif : faire durer leur batterie le plus longtemps possible, et pour cela, ils veulent que leur appareil en fasse le moins possible. Suivant les fabricants, on va alors avoir des applications spécifiques qui vont servir soit à tuer les app qui tournent en arrière-plan, soit à les mettre en pause prolongées, ce qui revient quasiment au même.

Pour déjà comprendre ce qui se passe, j'ai mis en place une notification permanente qui est mise à jour toutes les minutes, car c'est la périodicité choisie pour envoyer les données au serveur. A chaque envoi de données, la notification se met à jour et indique à quelle heure la dernière remonté d'info a eut lieu. Ce que je constate, avec mon Poco X6 Pro, qui a remplacé le Poco F4, tombé en panne il y a quelques semaines (et toujours dans les mains du SAV), c'est que régulièrement, la notification disparaît. Le téléphone tue alors l'app si elle n'est pas utilisée. En fait, après quelques essais dans différentes circonstances, le téléphone tue l'app si elle utilise trop de ressources, car quand je suis statique, elle vit plus longtemps.

Après quelques recherches, j'ai enfin trouvé comment faire en sorte que mon app vive longtemps. D'abord, dans les paramètres de l'app, il y a 2 options : "Interrompre l'activité de l'application si elle n'est pas utilisée" à désactiver ; "Economiseur de batterie" à mettre sur "Pas de restrictions".


Après ça, toujours pareil, peut-être un peu moins souvent, mais la notification disparaît quand-même régulièrement. J'ai donc continué mes recherches, et j'ai trouvé des infos sur l'utilitaire Sécurité, un outil fait par Xiaomi pour gérer la "sécurité" du téléphone ... et sa batterie.
Dans cet outil, il y a une partie qui s'appelle "Gérer les applications". D

Dans cette partie, une icône "Démarrage automatique". J'ai donc ajouté mon app à cette liste, et j'ai supprimé d'autres app qui n'y avaient pas leurs places.


Maintenant, c'est différent : mon app est bien tuée par HyperOS quand elle prend trop de ressources, mais Sécurité la redémarre automatiquement. C'est un peu ridicule car lors du redémarrage, elle envoie alors plus d'informations pour son initialisation, mais c'est la logique du téléphone alors je dois passer par là, et l'app est bien compatible avec ce système, donc tout fonctionne bien.

En 2021, je suis allé à Londres pendant 3 jours à DroidCon, une conférence, sur 3 jours, sur plein d'aspects d'Android. J'ai appris plein de choses, j'aime bien ce type de rassemblement, car il y a beaucoup de monde, on était plus de 1500, l'ambiance était très bonne, et il y a plein de petites conférences sur des sujets spécifiques qui touchent à Android qui m'ont permis de mieux comprendre le fonctionnement du système.

Une des conférences le dernier jour, concernait justement la guerre entre les développeurs d'app qui doivent tourner en arrière-plan, et les fabricants de mobile. Une association a été créée pour luter contre les fabricants, qui s'appelle Don't kill my app. Cette association publie et met à jour en permanence un classement des fabricants suivant leurs politiques de gestion des app.
Malheureusement, dans ce classement, Xiaomi (qui vend Poco) est l'avant-dernier du classement devant Huawei, mais comme Huawei n'est plus vraiment dans la course, on peut dire que c'est le pire de ce classement. A la date de publication initiale de cet article (30/03/2024), le classement ne parle toutefois que de MIUI 14, et non pas d'HyperOS, le successeur avec Android 14, qui fonctionne un peu différemment mais toujours avec le même objectif : ne pas laisser les app fonctionner en arrière-plan.