9
votes

Application auto-redémarrage après la mise à jour du marché

Chaque fois que je publie une nouvelle version de mon application sur le marché, si l'utilisateur avait activé l'option "Mise à jour automatique", l'application sera mise à jour automatiquement.

L'application contient un service qui fonctionne constamment. Mais lorsque la mise à jour automatique se produit, l'ancienne application de course est tuée, mais le nouveau n'est pas démarré. Étant donné que la mise à jour se produit principalement de manière transparente à l'utilisateur, il est logique que le service de l'application soit démarré automatiquement après la mise à jour de sorte qu'il n'existe presque aucune interruption du service.

C'est un peu difficile de tester cela Avec une vraie mise à jour du marché, j'utilise donc les deux commandes adb suivantes pour simuler ce processus de mise à jour. Installation de la 1ère version: xxx

mise à jour automatique: xxx

Après avoir exécuté la deuxième commande, l'application gree avec succès. Mise à jour, mais elle a été arrêtée et non redémarrée.

Comment faire le service de la nouvelle version démarrer automatiquement?


3 Réponses :


5
votes

C'est quelque chose que vous devrez tester soigneusement, mais vous devriez pouvoir l'attraper avec un récepteur de diffusion avec l'action inent.action_packaged_replacé

Ensuite, vous démarrez le service de votre récepteur.


3 commentaires

J'essaie mais ne travaille pas ... j'ai essayé Pastie.org/8223893 Pouvez-vous donner une suggestion ??


Je pense que l'action action_my_package_replacé sera meilleure? Comme il est juste d'être envoyé au paquet mis à jour, tous les packages pas.


Comme document Android développeur.android.com/Guide/Components/broadcasts Remarque: Si Votre application cible l'API Niveau 26 ou supérieur, vous ne pouvez pas utiliser le manifeste pour déclarer un récepteur pour des émissions implicites (émissions qui ne ciblent pas votre application spécifiquement), à l'exception de quelques émissions implicites exemptées de cette restriction. Dans la plupart des cas, vous pouvez utiliser des travaux planifiés à la place. Donc cette intention.action_packaged_replacé est toujours en train de fonctionner?



1
votes

Enregistrer un BroadCastraCeiver à Intention.Action_Package_Replacé

Ensuite, comparez extra_uid avec le vôtre. Si cela correspond, vous pouvez recommencer votre service.


0 commentaires

8
votes

Si votre application est exécutée sur API 12 ou supérieure, je vous recommanderais d'enregistrer un Broadcastraceiver Écoute de Android.Intent.action.my_package_replacé .

Cette intention n'est déclenchée que si votre application a eu une mise à jour.


0 commentaires