2010-03-04 7 views
1

J'écris un widget d'écran d'accueil suivant le tutoriel de Jeff Shakey, http://android-developers.blogspot.com/2009/04/introducing-home-screen-widgets-and.html.Est-il correct d'utiliser le fil au lieu du service dans le widget écran d'accueil Android?

Ce didacticiel utilise le service pour éviter les délais d'attente ANR. Je me demande simplement, puis-je utiliser Thread au lieu de service pour faire le travail d'obtenir des données et de mettre à jour RemoteViews? Je ne souhaite pas créer de service, car Thread est plus facile à gérer et à transmettre des données à Thread.

Merci.

Répondre

4

Vous ne devez pas compter sur le thread. Ce n'est pas garanti de travailler. A partir d'expériences dans une situation similaire, l'approche thread a travaillé sur l'émulateur et la galaxie samsung mais pas fiable sur le g1. Donc, vous devriez vraiment essayer d'utiliser un service. C'est assez simple: définissez dans votre manifeste et startService. Il est un peu plus compliqué de transmettre des données via une intention, mais c'est gérable et l'approche globale est nettement plus robuste.

+0

* n'est pas garanti au travail. – CommonsWare

+0

Cela signifie-t-il que le thread ne fonctionne pas sur Android ou ne fonctionne pas pour le widget écran d'accueil? Quelle est la meilleure pratique pour le widget écran d'accueil, service uniquement ou service + thread? Je dois charger des données d'Internet pour mettre à jour l'écran de widget, je dois éviter les délais d'ANR. J'ai testé service + thread et thread uniquement sur simulateur et HTC Hero. Ça fonctionne bien. Si cela ne fonctionne pas sur d'autres appareils, je vais abandonner l'idée de fil. – user256239

+1

Veuillez lire les cycles de vie des processus: http://developer.android.com/intl/de/guide/topics/fundamentals.html#proclife Notez que si vous n'avez aucun composant en cours d'exécution dans votre processus (les activités de premier plan, reçoit dans onReceive(), les services en cours d'exécution ou les clients de premier plan de vos fournisseurs de contenu), votre système est considéré comme vide par le système et peut être supprimé à tout moment. – hackbod

3

J'ai lu un article disant que, pour éviter l'ANR, le service est parfois insuffisant. Le fil est nécessaire.

Voir:. http://blog.elsdoerfer.name/2009/06/03/writing-an-android-widget-what-the-docs-dont-tell-you/

« nous vous encourageons à utiliser un service pour effectuer vos mises à jour du widget si vous faites tout ce qui pourrait prendre un peu plus, afin d'éviter l'application ne répond pas (ANR) les délais d'expiration Cependant, cela ne suffira généralement pas ...... ......

La solution est que votre service démarre un thread séparé.Pour un exemple, voir Widget android-sky de Jeffrey Sharkey. "

Des pensées?

Questions connexes