Aller au contenu

Passage d'une activité à une autre lent


guiom056

Recommended Posts

Bonjour,

Je développe actuellement une mini application, composée de trois classes (donc autant d'activités différentes).

Lorsque je teste sous l'émulateur, pas de problème, la navigation est à peu près fluide.

En revanche, j'ai testé sur mon Desire et là, il faut parfois attendre une dizaine de secondes pour voir la nouvelle page s'afficher (qui correspond à une nouvelle activité), lors du clic sur un bouton par exemple... C'est beaucoup pour une appli qui ne compte que 3 fenêtres différentes ! :/

Je voulais savoir pourquoi mon application était si lente.

Merci d'avance ;)

Lien vers le commentaire
Partager sur d’autres sites

composée de trois classes (donc autant d'activités différentes).

Peut-être devrais-tu optimiser ton code. Cela signifie que tu effectues tes calculs/tries/… dans tes activities et non dans des objets.

Aussi, la général il est plus efficace de générer l'UI avec les fichiers ressources XML et non en java, dans le code.

Lien vers le commentaire
Partager sur d’autres sites

Pour ce qui est de l'UI, j'utilise bien des fichiers XML.

Ensuite, mes pages sont des petits formulaires donc je vérifie/récupère les données dans les méthodes onCreate(Bundle savedInstanceState)

Je fais également des modifications de l'affichage des éléments dans ces méthodes (par exemple, en modifiant une image présente et déclarée dans le fichier XML en fonction de l'action de l'utilisateur)

Est-ce que ces problèmes de lenteur viennent du fait qu'il ne faut pas faire toutes ces opérations dans la méthode onCreate ? Si c'est le cas, comment procéder pour être le plus efficace possible ?

Mes listeners sont également situés dans les méthodes onCreate...

Merci de ton aide ;)

Edit :

Dans la méthode onClick, pour lancer une nouvelle activité et donc afficher la fenêtre correspondante, j'ai le code suivant :

       Intent intent = new Intent(Appli.this, Recap.class);
           intent.putExtra("login", login);
           startActivity(intent);

Lien vers le commentaire
Partager sur d’autres sites

Visiblement, les lenteurs viennent du fait que je suis connecté en Edge et que j'essaye de récupérer des données depuis un serveur. En wifi, c'est fluide :) J'essaierai en 3G quand je capterai le réseau.

Merci pour ton aide en tout cas.

Lien vers le commentaire
Partager sur d’autres sites

Si tu effectue un traitement avant de changer d'activité (ou au lancement) qui nécessite une communication ou récupération de données sur un serveur, cela peut prendre du temps en effet.

Pense à mettre un progress dialog qui dira à l'utilisateur de patienter et de ne pas penser que l'appli à planté.

J'espère t'avoir aidé ;)

Lien vers le commentaire
Partager sur d’autres sites

  • 4 weeks later...

J'ai essayé de mettre une progressbar au moment où l'utilisateur clique sur le bouton (donc c'est la première chose que je fais dans le listener) mais le problème c'est qu'elle ne s'affiche pas dès que le clic a lieu mais juste avant de passer à l'activité suivante (ce qui n'a donc aucun intérêt)

Sinon, j'ai essayé de modifier le texte du bouton "connexion" en le remplaçant par "en cours..." mais là encore, le texte n'est pas modifié dès le clic de l'utilisateur... :(

Merci pour votre aide ! ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...