120 votes

Optimisation de l'application Android avant sa diffusion

Je suis dans un " spécial "situation à propos de efficacité de mon programme. Maintenant, je suis dans une phase où je dois améliorer la performance de l'application et réduire consommation de la batterie .

Avant la question :

Maintenant, je suis curieux de savoir ce que font les autres développeurs. spécial qu'ils ont utilisés pour optimiser leurs propres applications. Des éléments que les utilisateurs ne reconnaîtront peut-être jamais ou auxquels ils ne prêteront pas attention. Cependant, ces correctifs permettront d'augmenter la durée de vie de la batterie ou d'améliorer la maintenance de l'application.

Donc, quelle est votre (vos) astuce(s) unique(s) d'optimisation ?

Je suis dans une situation particulière où je suis vraiment à la recherche de connaissances et je pense que ce sera une excellente occasion de partager les connaissances des développeurs sur une situation qu'ils ont tous vécue.

Veuillez voter pour les bonnes réponses, car cela encouragera les grands développeurs à partager leurs connaissances.

67voto

unholysampler Points 9454

À un moment donné, vous allez arriver à un point où l'utilisation des astuces connues atteindra ses limites. La meilleure chose à faire à ce moment-là est de profiler votre code et de voir quelles sont les zones qui sont les goulots d'étranglement en fonction de vos exigences spécifiques.

Profiler avec Traceview et dmtracedump : un article sur la façon d'utiliser les outils pour profiler votre application.

37voto

olivierg Points 7200

Suivre et écraser les allocations. Plus vous allouez de ressources, plus le ramasseur de déchets devra être exécuté fréquemment, ce qui empêchera votre processus de faire quoi que ce soit d'autre pendant des périodes relativement longues, comme 100 ms environ.

Le meilleur outil que je connaisse pour cela est le suivi d'allocation inclus dans le logiciel DDMS .

Non seulement le GC peut avoir un impact sur l'expérience utilisateur, mais les allocations superflues et le GC consomment des ressources informatiques.

Voici un exemple et une petite astuce. Dans mon application, j'ai une horloge qui indique l'heure actuelle (audio), y compris les dixièmes de secondes. Elle est mise à jour souvent. Et le TextView effectue des allocations en interne lorsque vous appelez setText() avec un CharSequence. Mais il n'alloue rien avec la variante setText(char[] text, int start, int len). Ce n'est pas documenté, et personne n'a répondu à ma question.

Il y en a beaucoup comme ça. Et c'est l'une des raisons pour lesquelles mon application contient 50% de code natif (mais il y a d'autres raisons).

En dehors de cela, je peux vous recommander d'expérimenter avec ProGuard . Il effectue plusieurs passes d'optimisation, et enregistre des informations telles que les méthodes inutilisées dans le projet, ce qui peut vous aider à éliminer les restes dans votre code.

22voto

Aleadam Points 25433

Si votre application doit passer beaucoup de temps à l'écran, utilisez le noir partout où vous le pouvez . Cela permettra de réduire la consommation de batterie de la partie la moins performante de l'appareil : l'écran, en particulier dans les téléphones et tablettes AMOLED.

16voto

NickT Points 14155

Pour les applications comportant plusieurs activités, vérifiez que vous ne redémarrez pas les activités qui ont juste besoin d'être mises en avant en utilisant les indicateurs d'intention appropriés. Vérifiez que votre tas est sous contrôle et que des vues, des liaisons et des contextes inutiles ne sont pas créés.

Je trouve que le meilleur outil pour vous montrer tout cela au fur et à mesure que l'application fonctionne est.. :

adb shell dumpsys meminfo 'your apps package name'

15voto

Heiko Rupp Points 15153

Lorsque vous utilisez SQLlite, accordez une attention particulière aux index. Ne supposez rien. J'ai obtenu d'énormes accélérations dans Zwitscher, lorsque j'ai mis des index sur les colonnes couramment utilisées pour la recherche.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X