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
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
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.
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();
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.
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.
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 (?) :
ensuite il y'a des processus qui vont produire des données et indiqueront au CountDownLatch qu'un "truc" est fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part final CountDownLatch latch = new CountDownLatch(2);
et d'autres qui doivent attendre que ces trucs soient fait. pour attendre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part latch.countDown();
éventuellement on peut indiquer un timeout.
Code : Sélectionner tout - Visualiser dans une fenêtre à part latch.await();
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.
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.
Partager