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 :

Probleme de performance lors d'accès par webservices


Sujet :

Android

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut Probleme de performance lors d'accès par webservices
    Bonjour
    Me revoila sur e forum avec aujourd'hui une demande d'aide sur les performance de mon application Android.
    Dans cette application il est utilisé CalendarView que j'alimente a partir de données récupérées par webservices avec des requêtes PHP. Les requêtes n'ont aucun probleme, elles sont utilisées sur l'application web sans aucun probleme de performance. Par contre coté application Android et vue que l'alimentation du calendrier se fait jour par jour mon accès au webservices se fera autant de fois qu'il y a de jours entre Date J et Date fin de mois.
    Je m'explique nous sommes le 17/02 et bien l'appel a la requête PHP se fera 12 fois. et si l'utilisateur sélectionne le mois de mars, cela se passera 31 fois. D'ou mes problèmes de performance.
    Je precise que je ne fais que corriger une application deja écrite donc pas trop le temps de faire des modif importantes.

    Auriez vous une solution a me proposer pour améliorer mes perf ?

    Merci
    Cordialement

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    février 2013
    Messages
    191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : février 2013
    Messages : 191
    Points : 472
    Points
    472
    Par défaut
    Je m'explique nous sommes le 17/02 et bien l'appel a la requête PHP se fera 12 fois. et si l'utilisateur sélectionne le mois de mars, cela se passera 31 fois. D'ou mes problèmes de performance.
    Tu ne peux pas faire une requête qui te donne toutes les données dont tu as besoin ?

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    En effet, j'ai pense a cette éventualité je peux en effet récupérer du serveur un tableau contenant les infos pour tous les jours voulu et non plus jour par jour. Mais je devrais alors ensuite le parcourir cote Android avec Java pour mettre a jour mon CalendarView. Je craignais une trop importante modif de code. Je suis limitée dans le temps.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Bonjour,
    Alors j'ai modifie ma requête afin d'obtenir toutes les informations en une seule fois. J'obtiens un Json que je n'arrive pas a "parser". j'obtiens toujours la meme erreur. Je ne suis pas tres douée en la matière. J'ai besoin de votre aide pour y arriver. Voici le Json :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error parsing data org.json.JSONException: Value {"disponibility":{"21":[{"disp":[]}],"20":[{"disp":[]}],"19":[{"disp":[]}],"22":[{"disp":[540,555,570,585,600,615,630,645,660,675,690,780,795,810,825,840,855,870,885,900,915,930,945,960,975,990]}],"23":[{"disp":[540,555,570,585,600,615,630,645,660,675,690,780,795,810,825,840,855,870,885,900,915,930,945,960,975,990]}],"18":[{"disp":[]}],"24":[{"disp":[540,555,570,585,600,615,630,645,660,675,690,780,795,810,825,840,855,870,885,900,915,930,945,960,975,990]}],"25":[{"disp":[540,555,570,585,600,615,630,645,660,675,690,780,795,810,825,840,855,870,885,900,915,930,945,960,975,990]}],"26":[{"disp":[570,585,600,615,630,645,660,675,690,780,795,810,825,840,855,870,885,900,915,930,945,960,975,990]}],"27":[{"disp":[]}],"28":[{"disp":[]}],"29":[{"disp":[540,555,570,585,600,615,630,645,660,675,690,705,720,735,750,765,780,795,810,825,840,855,870,885,900,915,930,945,960,975,990]}]}} of type org.json.JSONObject cannot be converted to JSONArray
    Il s'agit des disponibilites d'un employe. Vous avez le jour et les heures pour ce jour donne.

    Merci d'avance.

    Bonne journee

    Sandy

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    6 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 6 368
    Points : 18 487
    Points
    18 487
    Par défaut
    Sans voir le code qui parse difficile de deviner , mais l'erreur est parlante , elle te dis que tu essai de parser un objet dans un array ce qui évidemment ne marche pas.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Voila le code :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    protected void affichageSuite(String reponse) {
    		JSONArray jArrayHoraires = null;
    		if(reponse==null)
    			return;
     
    		try{
    			JSONObject object = new JSONObject(reponse);
    			JSONArray Jarray = object.getJSONArray("disponibility");
    			for (int i = 20 ; i< object.length(); i++)
    			{
    				 JSONObject Jasonobject = Jarray.getJSONObject(i);
     
    				/*String disp =null;
    				disp=  Jasonobject.getString("disp");
    				Log.e("disp", " "+disp);*/
     
    				jArrayHoraires = Jasonobject.getJSONArray("disp");
     
    				Log.e("AFFICHAGE DES DISPONIBILITE", " "+jArrayHoraires);
    				if (jArrayHoraires.length() == 0) {
    					listDayRdv.add(new DayRdv(false, null));
    				}else{
    					String[] tabHoraires = new String[jArrayHoraires.length()]; 
    					for (int j = 0; j < jArrayHoraires.length(); j++) {	
    						int valueHeure = jArrayHoraires.getInt(j);
    						String heure = String.format("%d:%02d", (valueHeure/60), (valueHeure%60));
    						tabHoraires[j] = heure;					
    					}
    					listDayRdv.add(new DayRdv(true, tabHoraires));
    			}
    		}
    Je suis un peu nulle dans le parsing de json

    Merci de m'aider.

  7. #7
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    6 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 6 368
    Points : 18 487
    Points
    18 487
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JSONArray Jarray = object.getJSONArray("disponibility");
    Tu demande à parser disponibility dans un JSONArray alors à priori , vu ton JSON, c'est un objet et non un array.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Ok je vais essayer de corriger. Mais si je veux recuperer les heures qu'est ce que je dois parse ?
    Nom : json.gif
Affichages : 58
Taille : 12,5 Ko

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Bon ca donne ca :

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    protected void affichageSuite(String reponse) {
    		JSONArray dispArray = null;
    		if(reponse==null)
    			return;
     
    		try{
    			JSONObject object = new JSONObject(reponse);
    			JSONObject dispObject = object.getJSONObject("disponibility");
     
    			for (int i = 1 ; i< dispObject.length(); i++)
    			{    				 dispArray = dispObject.getJSONArray("disp");
    				if (dispArray == null) {
    						return;
    				}
    				for (int j = 0 ; j< dispArray.length(); j++){
    						JSONObject disponibility = dispArray.getJSONObject(j);
    						String disp =null;
    						disp= disponibility.getString("disp");
     
    					}
     
     
    			}
     
     
    		}catch(JSONException e){
    			if(BuildConfig.DEBUG)
    			{
    				Log.e("log_tag", "Error parsing data "+e.toString());
    			}
    		}
    	}
    Mais la j'ai une autre erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error parsing data org.json.JSONException: No value for disp

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    mars 2009
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : Israël

    Informations forums :
    Inscription : mars 2009
    Messages : 37
    Points : 29
    Points
    29
    Par défaut
    Bon ben j'ai reussi !!! Voila comment j'ai fait, ca peut aider certains :

    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
    23
    24
    25
    26
    27
     
    	protected void affichageSuite(String reponse) {
    		JSONArray dispArray = null;
    		String iString;
    		if(reponse==null)
    			return;
     
    		try{
    			JSONObject object = new JSONObject(reponse);
    			JSONObject dispObject = object.getJSONObject("disponibility");
    			for (int i = 19 ; i< 29; i++)
    			{   iString =  String.valueOf(i);
    				dispArray = dispObject.getJSONArray(iString);
    				for (int j = 0 ; j< dispArray.length(); j++){
    						JSONObject disponibility = dispArray.getJSONObject(j);
    						String disp =null;
    						disp= disponibility.getString("disp");
    					////LA JE TRAITE MES TABLEAUX DISP CONTENANT LES HEURES UN A UN
    				}
    			}
    		}catch(JSONException e){
    			if(BuildConfig.DEBUG)
    			{
    				Log.e("log_tag", "Error parsing data "+e.toString());
    			}
    		}
    	}
    Merci pour votre soutien.

    Sandy

    PS: J'ai pas fini pour faire mes tests de performances mais il est certain qu'ils seront significativement améliorés.

  11. #11
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(BuildConfig.DEBUG)
       {
        Log.e("log_tag", "Error parsing data "+e.toString());
       }
    Pourquoi tant de haine envers les release ? Elles n'ont pas le droit de loger leur erreur ?
    (ca peut être utile pourtant de voir les logs attachés à une version release).
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  12. #12
    Membre confirmé Avatar de alves1993
    Homme Profil pro
    Développeur Java/Dart/Javascript/Android (FullStack)
    Inscrit en
    décembre 2012
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Java/Dart/Javascript/Android (FullStack)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2012
    Messages : 222
    Points : 644
    Points
    644
    Par défaut
    Retrofit une autre solution à ton problème http://square.github.io/retrofit/
    Un geek ne vieillit pas, il se met à jour.

    Pour plus d'informations sur Android regarder la faq Android.
    Ensuite les tutoriels Android sont disponibles ici
    Pour les mecs, qui n'arrivent pas toujours à digérer le Javascript, Dart peut-être une solution pour vous.

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

Discussions similaires

  1. [MySQL] Performance lors d'un backup de base de données ligne par ligne
    Par Jolt0x dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 06/04/2014, 01h05
  2. Probleme d´affichage d´un array list par webservice
    Par i_mt2 dans le forum Services Web
    Réponses: 1
    Dernier message: 06/05/2010, 18h33
  3. Erreur lors de l'accès à un WebService via IE
    Par kendras dans le forum Services Web
    Réponses: 1
    Dernier message: 11/10/2007, 16h06
  4. [AXIS] Problem envoie de mail par webservice
    Par BriceTheNice dans le forum Services Web
    Réponses: 1
    Dernier message: 21/06/2006, 11h29
  5. problemes de performances avec les requetes select
    Par berry dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/07/2003, 13h39

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