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 :

Récupération de données au lancement de l'application


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut Récupération de données au lancement de l'application
    Bonjour,

    J'aimerai savoir dans quel fichier et méthode dois-je appeler mes fonctions qui récupère des flux json.

    J'ai besoin de ces flux avant le lancement de la première vue
    Merci

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    par fichier, je suppose que tu veux dire classe...

    il te faut une API Java qui te permets de manipuler du JSON (à moins que sur Androïd cela soit inclus, mais je ne connais pas pour dire)

    Par exemple, JACKSON

    ou JSON-P
    ou JSON.org
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut
    J'utilise déjà une class pour le json(JSONParser), mon problème n'ai pas de récupérer les flux json mais de faire attendre la première vue qui à besoin de ces données.

    voici mon bout de code pour le moment (je l'ai mit dans la methode onCreate de ma classe qui gère ma tabActivity):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    final CountDownLatch latch = new CountDownLatch(2);
     
    			new Thread(new Runnable(){
    			  @Override
    			  public void run(){
    			    // Do something
    				  	JSONParser jParser = new JSONParser();
    					JSONObject json = jParser.getJSONFromUrl(urlCourseDuJour);
    					System.out.println("course du jour");
     
    					Donnees allDatas = Donnees.getInstance();
    					try {
    						allDatas.cdj = json.getJSONObject("coursedujour");
    					} catch (JSONException e1) {
    						// TODO Auto-generated catch block
    						e1.printStackTrace();
    					}
     
    			    latch.countDown();
    			  }
    			}).start();

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par romaindu86 Voir le message
    J'utilise déjà une class pour le json(JSONParser), mon problème n'ai pas de récupérer les flux json mais de faire attendre la première vue qui à besoin de ces données.
    mais c'est bien ton programme qui l'affiche cette "vue" ?
    et avant de l'afficher, cette vue est créée (une instance de classe est créee, etc.)
    donc tu peux très bien charger les données avant de la créer, ou dans le constructeur, avant de l'afficher ?

    Quand tu parles de "vue", tu parles de quoi exactement ?
    Une JFrame ? ou toute classe AWT/SWING du genre ?
    Une classe de vue Eclipse RCP (étendant IViewPart) ou un Shell SWT ? ou tout classe SWT/JFACE du genre ?

    Si tu as besoin de charger des données et que ça prend du temps,
    - en swing, utilise un SwingWorker
    - en swt/jface, utilise un job, ou un IRunnableWithProgress

    le CountDownLatch permet quand tu utilises plusieurs threads, que certains attende le résultat d'autres pour continuer
    lorsqu'on fait du l'UI en java (en swing comme en swt), on fait le traitement de l'UI sur le thread graphique. On doit éviter de bloquer le thread graphique : si on utilisais un CountDownLatch pendant une chargement de données long, toute l'application serait bloquée tant que le chargement ne serait pas terminé. C'est là qu'intervient le SwingWorker en swing : il va faire le boulot dans son thread bien tranquille sans bloquer le thread graphique et à la fin il invoque la méthode done() ou il suffit de mettre le code qui remplit l'affichage.
    idem pour un Job swt ou un IRunnableWithProgress, ou dans le principe on fait un Display.getDefault().asyncExec(...) par exemple lorsqu'on a chargé les données.

    je te donnerai éventuellement plus de précision lorsque tu m'auras précisé dans quel environnement graphique tu te trouves et c'est quoi ta "vue" ?
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  5. #5
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par romaindu86 Voir le message
    (je l'ai mit dans la methode onCreate de ma classe qui gère ma tabActivity
    hum, j'avais pas vu ce "onCreate"... donc j'avais pas capté que tu étais sur Android...

    là désolé, oublie ce que je t'ai dis dans mon post précédent, ça ne concerne à priori pas Androïd... et là je n'y connais pas grand chose
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  6. #6
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Je repasse 2 secondes au sujet du CountDownLatch...

    je sais rien de l'interconnexion avec l'UI Android... mais pour le CountDownLatch, comme je le disais dans le précédent post, il sert à permettre à des threads d'attendre que des "trucs" soit terminés

    lorsqu'on créé l'instance, on indique un compteur de "truc" qu'on va vouloir attendre, dans ton cas 2 (?) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    final CountDownLatch latch = new CountDownLatch(2);
    ensuite il y'a des processus qui vont produire des données et indiqueront au CountDownLatch qu'un "truc" est fait :

    et d'autres qui doivent attendre que ces trucs soient fait. pour attendre :

    éventuellement on peut indiquer un timeout.

    un CoundDownLatch tel qu'il n'y a aucun process qui "attends" ne sert à rien...

    et évidement, il faut garantir qu'il y ait autant d'appel de countDown() que la valeur passée au constructeur du CountDownLatch, sinon le process qui attends risque d'attendre longtemps (sauf s'il y a un timeout, mais là il sera tout le temps en timeout).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2009
    Messages : 7
    Par défaut
    Tous d'abord merci de ton implication.
    Comme je te le dit dans le message précédent j'utilise ce bout de code dans la méthode "oncreate" de mon activity qui créer mon tabhost.

    Je souhaite pour résumer charger plusieurs flux indépendamment (au moment de l'affichage de l'image de lancement de l'application)

    J'utilise "CountDownLatch" car je veux que ma vue attendre que tous les flux soient récupérer pour s'afficher.

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

Discussions similaires

  1. [Objective-C] [Core Data] Ou et comment charger des données au lancement de l'application
    Par gregfreemind dans le forum Objective-C
    Réponses: 0
    Dernier message: 29/06/2014, 14h53
  2. Récupération des données du serveur dans l'application Android
    Par Houssem16 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 26/05/2014, 12h30
  3. Réponses: 4
    Dernier message: 14/04/2014, 23h29
  4. Réponses: 9
    Dernier message: 06/01/2011, 17h53
  5. [XMLRAD] récupération de donnée
    Par Mitch79 dans le forum XMLRAD
    Réponses: 7
    Dernier message: 30/01/2003, 15h36

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