Question

J'ai une IntentService que les files d'attente jusqu'à appels de service Web qui ont besoin d'être à mon serveur web. Donc, chaque intention est un appel de service web à faire.

Je voudrais ensemble quelque chose où ma demande peut demander à ce IntentService si elle a des Intentions contenant un morceau particulier de données (IE: « Attendez-vous déjà demander le nuage pour les données x Ou dois-je vous dire de le faire? »).

Y at-il des suggestions sur la façon dont je pourrais étendre IntentService faire cela? la file d'attente d'une intention IntentService peut être traversée? Ou aurais-je besoin de prendre le code IntentService et le modifier?

La seule autre idée que j'ai est d'ajouter une table à la base de données et connectez-vous qui sont des appels dans la file d'attente, chaque journal étant retiré de la table une fois rempli.

Était-ce utile?

La solution

Y at-il des suggestions sur la façon dont je pourrais étendre IntentService faire cela? la file d'attente d'une intention IntentService peut être traversée? Ou aurais-je besoin de prendre le code IntentService et le modifier?

Probablement ce dernier, si vous voulez vraiment examiner la file d'attente réelle. IntentService transforme le Intents en messages crevés sur la file d'attente de messages d'un Looper via un HandlerThread. Rien de tout cela est exposé à travers le SDK, cependant. Heureusement, IntentService est assez court - même pas 150 lignes. Vous pouvez cloner dans votre propre package et apporter des modifications au besoin. Il suffit de lancer un diff sur la source des mises à jour lorsque de nouvelles sources sont publiées dans le référentiel de PSBA, afin de savoir si Google effectue une intervention chirurgicale majeure sur IntentService lui-même qui vous voudrez peut-être tirer profit.

La seule autre idée que j'ai est d'ajouter une table à la base de données et connectez-vous qui sont des appels dans la file d'attente, chaque journal étant retiré de la table une fois rempli.

Il ne serait pas même besoin d'être persistant comme ça, depuis propre file d'attente du IntentService ne persiste pas. Il suffit de maintenir votre propre file d'attente FIFO dans onStartCommand(), enchaînant à la superclasse, et éclater votre Intent au large de la file d'attente à la fin de onHandleIntent(). Cela a une chance de sortir de la synchronisation avec la file d'attente de maître (par exemple, vous aurez envie d'utiliser finally pour vous assurer pop le travail de votre propre file d'attente), mais vous n'auriez pas à cloner la classe.

Autres conseils

Une autre solution pourrait être de le résoudre en remplaçant onStartCommand.

est une solution en douceur dans laquelle je me suis inspiré pour un problème similaire: )

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