165 votes

Pourquoi le poids imbriqués sont mauvais pour la performance ? Solutions de rechange ?

J'ai écrit quelques fichiers de mise en page où j'ai utilisé de l' layout_weight attribut pour créer un rapport entre les différentes vues.

À un certain moment, je commence à être peluches avertissements sur imbriquée poids.

Alors, je me demande pourquoi sont imbriqués poids mauvais pour la performance, et si il ya un moyen plus efficace pour créer un rapport constant entre la vue des dimensions qui pourraient être utilisés pour différentes tailles d'écran et qui n'a pas besoin de spécifier un lot de dimension dpi valeurs à travers plusieurs fichiers de mise en page (pour les différentes tailles d'écran, je veux dire).

Merci!!!!

145voto

C.d. Points 3046

Imbriqués les poids sont mauvais pour la performance, parce que:

Mise en page de poids nécessite un widget pour être mesurée à deux reprises. Lorsqu'un LinearLayout non nul poids est imbriquée à l'intérieur d'un autre LinearLayout non nul des poids, le nombre de mesures augmenter de façon exponentielle.

Il est toujours préférable d'utiliser RelativeLayouts et ajuster votre point de vue selon les lieux d'autres points de vue, sans l'utilisation de valeurs dpi.

48voto

WIllJBD Points 2292

Je pense (et je vais probablement être flammé pour cela), mais encore une fois je pense que mon téléphone est équipé d'un processeur quad core de rival (si pas complètement détruire) la plupart des peuples PC à la maison.

Je pense également que ce type de matériel est la capacité de l'avenir de téléphones.

J'en viens à ma conclusion, que, tant que vous n'êtes pas à se laisser emporter à la nidification (MHO une mise en page ne doit jamais être plus de 4 niveaux de profondeur, et si c'est vous sont probablement de faire le mal), votre téléphone ne s'intéressent pas à avoir de poids.

Il y a beaucoup de choses que vous pouvez faire qui va beaucoup plus loin en effet sur la performance, alors s'inquiéter de votre processeur en faisant quelques extra-mathématiques.

(veuillez noter que je suis un peu d'humour, et donc à ne rien prendre trop au sérieux de ce post, d'autres, puis l'idée qu'il y a d'autres choses que vous devez optimiser en premier, et que s'inquiéter de 2 à 3 niveaux de profondeur de poids n'est pas d'aider votre santé)

11voto

Jave Points 14930

La raison principale pourquoi imbriqués les poids sont mauvais, c'est que quand un modèle a des enfants avec un poids, elle doit être mesurée deux fois (je pense que cela est mentionné dans la non-avertissement). Cela signifie que les pondérée de la mise en page qui contient également une pondéré disposition doit mesurée quatre fois, et chaque "couche" de poids vous ajoutez d'accroître les mesures avec une puissance de deux.

Dans ICS (niveau API 14) GridLayout a été ajouté, qui permet la simple et "à plat" des solutions pour de nombreuses mises en page qui nécessitaient auparavant des poids. Si vous êtes en développement pour les versions antérieures d'Android, vous avez un peu plus de mal à le retirer de poids, mais à l'aide d'un RelativeLayout et l'aplatissement autant que possible de votre mise en page dans la cabine généralement de supprimer un grand nombre de imbriquée poids.

1voto

Gangnus Points 7646

Selon moi, la seule alternative est de faire une fonction qui s’appellerait onResume et mettra toutes les tailles et positions. De toute façon, en poids, vous pouvez définir uniquement formats mais sans remplissage de (donc mises en deviennent encore plus compliquées), aucun textSize n’est (impossible de compenser cela en quelque sorte), sans parler des choses telles que le numéro des lignes.

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