Question

J'ai un service IDL à casiers mixtes que j'utilise de deux manières:

  1. Le service va générer un thread et effectuer un appel réseau pour récupérer du contenu XML au nom d'Activity. Le contenu est renvoyé à l'activité via l'IDL du client qui définit les méthodes de rappel
  2. Si l'utilisateur choisit l'option de notification, le service crée un minuteur qui est exécuté à plusieurs reprises et crée une notification sur la barre d'outils. Il a également mis le contenu en cache afin que, lorsque Activity demande une mise à jour, il soit servi à partir du cache plutôt que d’un autre appel réseau

Mes questions sont donc

  1. Pour le scénario 1, quel est le prix (le cas échéant) que je paie pour utiliser le service pour les appels réseau au lieu de créer un fil d’arrière-plan directement dans l’Activité?
  2. Pour le n ° 2 - est-il préférable de changer d'implémentation en AlarmManager? J'ai remarqué que lorsque je supprime les processus avec TasKiller, mon service meurt et ne redémarre jamais. Le travail basé sur AlarmManager aurait-il une meilleure chance de récupération?
Était-ce utile?

La solution

  

Pour le scénario 1, quel est le prix (si   je paie pour utiliser le service pour   appels réseau au lieu de créer   fil de fond directement dans le   Activité?

Je suppose que, puisque vous avez dit qu'il s'agissait d'un "service IDL", c'est ce que j'appelle un service distant: vous utilisez AIDL pour définir une interface utilisée au-delà des limites du processus.

Dans ce cas, le coût est de plusieurs Mo de RAM pour le second processus, plus un peu de temps CPU pour la surcharge IPC. Combien de temps "peu de temps CPU"? Cela dépend de la fréquence à laquelle il est appelé.

  

Pour # 2 - est-il préférable de changer   mise en œuvre dans AlarmManager?

En général, oui. Idéalement, les services sont en mémoire le moins possible.

  

J'ai remarqué que lorsque je tue les processus   avec TasKiller mon service meurt et   ne sera jamais redémarré, serait   Le travail de base AlarmManager a mieux   chance de récupération?

Non, car "tâche tueur" les applications ont tendance à abuser d'une API (selon les mots de Dianne Hackborn) qui tue tout, y compris les alarmes planifiées. À l'heure actuelle, il n'y a pas de solution fiable & amp; défense efficace contre les "tueurs de tâches" " que je sache.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top