IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

AsyncTask dans un Provider


Sujet :

Android

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut AsyncTask dans un Provider
    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

  2. #2
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    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

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    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.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    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 ?

  5. #5
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    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

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    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 ?

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    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

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    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 ?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 75
    Points : 61
    Points
    61
    Par défaut
    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utiliser AsyncTask dans une classe de Service ?
    Par bza88 dans le forum Android
    Réponses: 1
    Dernier message: 28/05/2013, 01h15
  2. Ajouter un nouveau provider dans la liste des providers dans MS SQL
    Par charlesdg dans le forum Développement
    Réponses: 2
    Dernier message: 25/05/2010, 12h39
  3. attribut provider dans persistence.xml
    Par riadhhwajdii dans le forum JPA
    Réponses: 2
    Dernier message: 15/11/2009, 21h01
  4. Réponses: 1
    Dernier message: 12/06/2009, 14h58
  5. Réponses: 3
    Dernier message: 18/02/2009, 10h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo