Bonjour à tous,
Je souhaiterai savoir si c'est possible de faire un AsyncTask dans un provider.
Est ce que c'est possible ?
Bonne journée
Bonjour à tous,
Je souhaiterai savoir si c'est possible de faire un AsyncTask dans un provider.
Est ce que c'est possible ?
Bonne journée
Dans un provider ? de quoi ? de Content ?
Rien ne force un ContentProvider à retourner vite... donc je dirai que l'AsyncTask n'est pas nécessaire...
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Surtout que si je ne m'abuse, une AsyncTask sert uniquement à simplifier la communication entre un thread effectuant une tache longue et le thread graphique. Le ContentProvider n'ayant pas d'interface graphique, il n'y a pas d'intérêt à utiliser l'AsyncTask. Pour les threads, si la logique de l'application est plus simple à comprendre en la séparant en plusieurs traitements parallèles, pourquoi pas.
Excusez-moi, je n'ai pas été assez précis.
Donc le but est d'avoir un provider qui puisse effectuer des connexions via des web services.
Pour l'instant j'ai mis en place mon provider. Ça fonctionne bien.
Mais lorsque j'effectue une connexion vers mon web services, j'ai une erreur. je pensais donc que ça venait du fait que ce n’était pas mis dans une classe étendant l'AsyncTask.
Donc peut importe le temps que mon provider mettra a répondre ?
Est-ce que je peux placer l 'appel à web service dans mon provider ?
Je ne sais toujours pas ce que tu appelles "provider"....
Il y a dans Android un truc approchant: les ContentProvider.
Un content provider finalement c'est juste une traduction d'une URL, des colonnes, des filtres, en un Cursor.
Le ContentProvider n'a aucun notion d'UI, donc peut-importe la durée de ces opérations, et l'appel à un webservice n'est pas différent que l'appel à une base de données locale.
Par contre, comme toujours dans l'UI d'une activité, il est interdit de faire des appels lents (création de cursor, appels internets, etc...).
Comme on ne connait pas le code, et on ne sait même pas l'erreur que tu obtiens....
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
C'est bien d'un ContentProvider dont je parlais.
Lorsque j'envoie une demande à mon contentProvider, j'ai cette erreur:
"android.os.NetworkOnMainThreadException"
Il me semble que cette exception est due au fait que ma requete au web service n'est pas dans un AsyncTask.
Qu'en pensez-vous ?
Ou que l'appel au ContentProvider n'est pas dans un thread....
Qui fait appel au ContentProvider ? Le système ?
N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
Et surtout
Effectivement c'est peut-être du a cela.
Pour effectuer mes tests j'ai crée un appel dans le même projet et il est dans une activity. Donc interface graphique.
Et dans un autre projet, il est aussi dans une activity donc effectivement ca bloque.
L’idéal est donc d'encapsuler mon appel au provider dans un AsyncTask => do in background ?
Voilà j'ai encapsulé mon appel à mon contentProvider dans une classe qui étend AsyncTask dans la méthode doInBackground et ça fonctionne.
Merci pour votre aide.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager