2013-06-08 3 views
1

J'ai mon application Android et je soupçonne qu'une autre application en cours d'exécution, tue tous mes threads et cela me cause beaucoup de problèmes.Puis-je empêcher que mon application ne puisse être supprimée par une autre application?

quelques questions: Il

1- Une autre application peut le faire? Je veux dire, quand l'application fonctionne sur l'écran, cela peut tuer d'autres threads en arrière-plan?

2- Si cela se produit, puis-je faire quelque chose pour éviter cela? Ou détecter si cela se passe réellement (tuer des threads)?

Merci!

PS: désolé pour mon mauvais anglais

+0

Avez-vous quelque chose dans les journaux? Êtes-vous sûr que ce n'est pas votre application qui se comporte mal? – fge

+0

Alors que d'autres applications ne sont pas vraiment supposées être capables de le faire explicitement, en pratique, une application de premier plan qui consomme suffisamment de ressources peut obliger le système à récolter les ressources en arrière-plan. –

+0

-stephan -fge mon application s'exécutant normalement en arrière-plan. Mais, j'ai l'information que le concurrent "fait cela", et je dois m'assurer que cela n'arrive pas vraiment – rsicarelli

Répondre

0

Rodrigo, puisque vous me dit par e-mail que votre demande n'a pas été enveloppé dans un service. C'est le premier endroit où vous devriez commencer.

  • Enveloppez votre code dans un Service (ce qui garantira que si le système est faible sur les ressources, il ne sera pas la première chose qui se fait tuer)

  • Mais ne pas utiliser encore un autre thread (s) depuis l'intérieur de votre service (afin que votre thread principal ne soit pas bloqué). Déclarez au système que votre service est au premier plan (même en arrière-plan).

Un service de premier plan est un service qui est considéré comme quelque chose l'utilisateur est conscient activement et donc pas d'un candidat pour le système à tuer quand de mémoire. Un service de premier plan doit fournir une notification pour la barre d'état, qui est placée sous l'en-tête "En cours", ce qui signifie que la notification ne peut pas être rejetée sauf si le service est arrêté ou supprimé du premier plan. Par exemple, un lecteur de musique qui lit de la musique à partir d'un service doit être réglé sur pour s'exécuter au premier plan, car l'utilisateur est explicitement conscient de son fonctionnement. La notification dans la barre d'état peut indiquer la chanson en cours et permettre à l'utilisateur de lancer une activité pour interagir avec le lecteur de musique.

  • place comme une grande partie de la fonctionnalité dans le nuage que vous le pouvez. Par exemple, au lieu de votre application interroger un serveur Web toutes les 10 secondes pour une demande client entrante. Faites en sorte que GCM (Google Cloud Messaging) envoie une requête ping au téléphone ou que le site Web envoie un SMS à votre application, lui demandant d'aller chercher la nouvelle requête sur le serveur. Comme votre application utilisera un récepteur de diffusion, il n'aura pas besoin d'être exécuté en arrière-plan.

  • Apprenez à utiliser le gestionnaire d'alarmes. Cela relancera votre service si, pour une raison quelconque, il est tué.Évitez d'envoyer des mises à jour GPS autant que possible, lorsque la voiture ne bouge pas ou lorsque le conducteur est en pause, à l'heure du déjeuner ou n'envoyez des mises à jour que lorsque le téléphone est branché sur le chargeur de voiture. Etc. Il existe des cadres conçus pour minimiser l'utilisation de l'antenne GPS et du plan de données. Faire usage de ceux autant que possible.

  • Et si la connexion de données n'est pas fiable. Évitez d'utiliser l'antenne GPS jusqu'à ce que vous obteniez un endroit avec une meilleure connexion. L'utilisation de gps prend beaucoup de pouvoir. Il peut même rendre votre téléphone très chaud. Quoi que vous fassiez, évitez d'alimenter l'antenne GPS autant que vous le pouvez. Techniquement, vous pouvez même envoyer des sms pour mettre à jour le serveur sur les coordonnées de la voiture (en supposant que le client a un sms illimité/texting plan).

Questions connexes