Fragment setRetainInstance avec UI Android

Ok, j'ai créé un Fragment avec une interface utilisateur (quelques boîtes de texte et des éléments) et j'ai utilisé setRetainInstance depuis Im en cours d'exécution d'un AsyncTask pour interroger un serveur (la demande ne peut être envoyée qu'une fois ) et j'ai besoin du résultat AsyncTask . Donc, ma question est: Est-ce faux de conserver tout le fragment avec l'interface utilisateur? J'ai vu quelques exemples où les gens utilisent un Fragment supplémentaire pour utiliser setRetainInstance mais … est-ce qu'il y a quelque chose de mal à ne pas utiliser cet extra? S'il y a un problème avec l'utilisation de setRetainInstance pourquoi est-ce? Impossible de trouver des informations dans la documentation à ce sujet.

  • Android: comment puis-je savoir si le clavier logiciel s'affiche ou non?
  • Android - Image Button Scale
  • Reconnaissance de l'interface Android et obtenez des visages similaires à partir de la base de données
  • Libusb_open_device_with_vid_pid a échoué lors de l'accès au périphérique USB
  • Qu'est-il arrivé à supprimer des objets de realm.io? RealmException "Supprimer l'objet n'est pas pris en charge".?
  • SDK Manager: Impossible d'installer. SDK android platform 3.0 API 11, révision 2
  • Mise à niveau Eclipse ne fonctionne pas
  • Comment gérer les problèmes de la nouvelle feuille inférieure de la bibliothèque de support / conception?
  • Problème de messagerie (envoyer un lien hypertexte dans le corps du courrier électronique) Android
  • Problème d'emballage de contenu Indicator TabPage de Android
  • Exception de SQL ActiveAndroid "Pas de table de ce type"
  • Android: ListView avec des boutons -> OnItemClick ne fait rien
  • 2 Solutions collect form web for “Fragment setRetainInstance avec UI Android”

    Même si vous utilisez setRetainInstance(true) , votre Fragment va encore recréer ses vues lors de la rotation (vous recevrez un appel sur onDestroyView , puis onCreateView ). Tant que vous ne gardez pas les références aux vues passées sur onDestroyView , il n'y aura aucune fuite de l'ancienne Activité. La meilleure approche serait de onDestroyView explicitement les références dans onDestroyView , mais votre code dans onCreateView remplacerait généralement ces références de toute façon.

    Il existe de nombreux exemples en ligne (y compris certains officiels) où les gens utilisent un fragment distinct (sans vue) pour conserver les données. En supposant ce que j'ai dit ci-dessus est correct, cela n'est pas nécessaire (pour éviter les fuites). Dans de nombreux cas, vous pouvez vous retrouver avec un code / architecture plus propre si vous utilisez un fragment distinct dont la responsabilité est juste de gérer les données et de ne pas vous soucier de l'interface utilisateur.

    Vous pouvez vérifier si vous garez les contextes d'activité après avoir tourné en utilisant Eclipse MAT .

    Si vous verrouillez votre orientation, vous devriez être bien. Sinon, vous pouvez vous retrouver avec des fuites de mémoire si vous conservez des widgets associés à une instance d'activité particulière.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.