2 votes

Dois-je effacer la liasse getExtra après avoir obtenu l'intention ?

J'essaie de résoudre TransactionTooLargeExeption décrit dans Que faire en cas de TransactionTooLargeException ?

Nous n'utilisons pas onSaveInstanceState de manière significative.

Nous passons des données supplémentaires lors du démarrage de l'intention, ce qui représente environ 10-20k de données.

Et l'application se plante après avoir ouvert l'activité environ 30 fois.

Je pense que les données supplémentaires s'accumulent et font planter l'application, et j'envisage de faire getIntent().removeExtra("data") après avoir reçu les données supplémentaires dans l'activité de réception.

Est-ce habituel de devoir supprimer l'intention reçue ?

0voto

Mohamed Yehia Points 108

Voici le Code source de getExtras() Méthode

public Bundle getExtras() {

   return (mExtras != null)
        ? new Bundle(mExtras)
        : null;
}

Comme vous pouvez le voir, chaque fois que vous appelez getExtras() il crée une copie de vos données (dans votre cas, vos données sont trop volumineuses)

Je vous suggère donc de supprimer votre Extra après l'avoir reçu afin de libérer votre mémoire et d'éviter une telle exception en utilisant removeExtra() comme vous l'avez mentionné précédemment.

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