Dilema: cuándo usar Fragmentos vs Actividades:

10 minutos de lectura

Dilema cuando usar Fragmentos vs Actividades
emilio adz

Yo sé eso Activities están diseñados para representar una sola pantalla de mi aplicación, mientras que Fragments están diseñados para ser diseños de interfaz de usuario reutilizables con lógica integrada en su interior.

Hasta no hace mucho, desarrollé una aplicación como decía que debían desarrollarse. creé un Activity para representar una pantalla de mi aplicación y usé Fragmentos para ViewPager o Google Maps. Rara vez creé un ListFragment u otra interfaz de usuario que se puede reutilizar varias veces.

Recientemente me topé con un proyecto que contiene solo 2 Activities uno es un SettingsActivity y otro es el MainActivity. el diseño de la MainActivity se llena con muchos fragmentos de interfaz de usuario de pantalla completa ocultos y solo se muestra uno. En el Activity lógica hay muchos FragmentTransitions entre las diferentes pantallas de la aplicación.

Lo que me gusta de este enfoque es que debido a que la aplicación utiliza un ActionBarpermanece intacto y no se mueve con la animación de cambio de pantalla, que es lo que sucede con Activity traspuesta. Esto le da una sensación más fluida a esas transiciones de pantalla.

Así que supongo que lo que pido es compartir su forma de desarrollo actual con respecto a este tema, sé que puede parecer una pregunta basada en una opinión a primera vista, pero lo veo como una pregunta de arquitectura y diseño de Android… No es realmente una uno basado en opiniones.

ACTUALIZACIÓN (01.05.2014): Tras esta presentación de eric burke desde Cuadrado(que debo decir es una excelente presentación con muchas herramientas útiles para los desarrolladores de Android. Y no estoy relacionado de ninguna manera con Square)

http://www.infoq.com/presentations/Android-Design/

A partir de mi experiencia personal durante los últimos meses, descubrí que la mejor manera de construir mis aplicaciones es crear grupos de fragmentos que lleguen a representar un flujo en la aplicación y presentar todos esos fragmentos en uno Activity. Así que básicamente tendrás el mismo número de Activities en su aplicación como el número de flujos. De esa manera, la barra de acción permanece intacta en todas las pantallas del flujo, pero se recrea al cambiar un flujo, lo que tiene mucho sentido. Como dice Eric Burke y como me he dado cuenta también, la filosofía de usar tan pocos Activities como sea posible no es aplicable para todas las situaciones porque crea un desorden en lo que él llama la actividad de “Dios”.

  • Mira mi publicación en SO – stackoverflow.com/questions/24647078/…

    – Dios mío

    1 de septiembre de 2014 a las 6:58

  • Posible duplicado de ¿Cuándo debo usar fragmentos en las aplicaciones de Android? ¿Por qué usar fragmentos?

    – Tomasz Dzieniak

    5 de julio de 2016 a las 21:57

  • Actividad única: por qué, cuándo y cómo (Android Dev Summit ’18) youtube.com/watch?v=2k8x8V77CrU&feature=youtu.be

    –Ben Butterworth

    21 de agosto de 2020 a las 7:45

  • hoy, la mejor respuesta para esta pregunta es aprender sobre SingleActivityArchitecture

    – zihadrizkyef

    22 de diciembre de 2021 a las 7:51


1646752275 941 Dilema cuando usar Fragmentos vs Actividades
sándalo

Los expertos le dirán: “Cuando vea la interfaz de usuario, sabré si debo usar un Activity o un Fragment“. Al principio, esto no tendrá ningún sentido, pero con el tiempo, realmente podrá saber si necesita Fragment O no.

Hay una buena práctica que encontré muy útil para mí. Se me ocurrió mientras intentaba explicarle algo a mi hija.

Es decir, imagina una caja que representa una pantalla. ¿Puedes cargar otra pantalla en este cuadro? Si usa una caja nueva, ¿tendrá que copiar varios elementos de la primera caja? Si la respuesta es Sí, entonces debe usar Fragmentsporque la raíz Activity puede contener todos los elementos duplicados para ahorrarle tiempo al crearlos, y simplemente puede reemplazar partes de la caja.

Pero no olvides que siempre necesitas una caja contenedora (Activity) o sus partes se dispersarán. Así que una caja con piezas dentro.

Tenga cuidado de no hacer un mal uso de la caja. Los expertos en UX de Android aconsejan (puedes encontrarlos en YouTube) cuándo deberíamos cargar explícitamente otro Activityen lugar de usar un Fragment (como cuando tratamos con el Cajón de Navegación que tiene categorías). Una vez que te sientas cómodo con Fragments, puedes ver todos sus videos. Más aún, son material obligatorio.

¿Puede mirar ahora mismo su interfaz de usuario y averiguar si necesita un Activity o un Fragment? ¿Obtuviste una nueva perspectiva? creo que lo hiciste

  • ¿Tienes un enlace al canal de YouTube que mencionas? Busco “expertos en UX de Android” y “UX de Android”, pero no estoy del todo seguro de qué videos estás hablando.

    – me–

    2 de junio de 2016 a las 8:15

  • Ya no, lo vi hace más de un año. Busque un desarrollador oficial de Android que hable sobre UX

    – sandalone

    2 de junio de 2016 a las 8:17

  • Un ejemplo de consideración: la actividad tiene parentActivity para que podamos sintetizar backstack al ingresar desde la notificación, pero no creo que haya tal parentFragment.

    – fikr4n

    24 de febrero de 2017 a las 22:51

  • @BornToCode hay getParentFragment: desarrollador.android.com/reference/android/support/v4/app/…

    – El fabricante de herramientas Steve

    5 mayo 2018 a las 21:13


  • @ToolmakerSteve sí, es getParentFragment, pero no es lo que quise decir amigo, mira desarrollador.android.com/guide/topics/manifest/…

    – fikr4n

    14 de mayo de 2018 a las 7:42

1646752276 174 Dilema cuando usar Fragmentos vs Actividades
Soluciones VJ Velan

Mi filosofía es esta:

Cree una actividad solo si es absolutamente absolutamente necesaria. Con la pila trasera disponible para realizar un montón de transacciones de fragmentos, trato de crear la menor cantidad posible de actividades en mi aplicación. Además, la comunicación entre varios fragmentos es mucho más fácil que enviar y recibir datos entre actividades.

Las transiciones de actividad son costosas, ¿verdad? Al menos eso creo, ya que la actividad anterior debe destruirse/pausarse/detenerse, colocarse en la pila y luego debe crearse/iniciarse/reanudarse la nueva actividad.

Es solo mi filosofía desde que se introdujeron los fragmentos.

  • cierto, pero como has escrito, a veces es necesario usar actividades. un ejemplo es la pantalla de una cámara, donde es mejor usarla en modo horizontal. otro ejemplo es la pantalla de configuración que se muestra cuando coloca un appWidget personalizado (en el “escritorio”: la aplicación de inicio).

    – desarrollador de Android

    30 de noviembre de 2013 a las 23:22

  • Gracias por responder y compartir su experiencia. Entonces, ¿cree que es una buena práctica en Android limitar la aplicación a una Actividad y usar Fragmento para todas las pantallas si la arquitectura de la aplicación lo permite?

    – Emil Adz

    1 de diciembre de 2013 a las 12:02

  • Entonces, ¿cómo resuelve el problema de los fragmentos que necesitan pasar el “estado” entre sí? Todo el estado en todos sus fragmentos debe vivir en una actividad, de lo contrario, se verá obligado a usar un singleton.

    – Sr_E

    27/09/2016 a las 20:40

  • No estoy convencido de que la comunicación entre varios fragmentos sea mucho más fácil que enviar datos de un lado a otro entre actividades.

    – Denny

    18 de marzo de 2017 a las 23:11

  • Por lo menos, onActivityResult() es más seguro y fácil que las devoluciones de llamada de fragmentos.

    – CoolMind

    06/10/2018 a las 18:03

1646752277 237 Dilema cuando usar Fragmentos vs Actividades
desarrollador de Android

Bueno, según las conferencias de Google (tal vez aquíno recuerdo), debería considerar usar Fragmentos siempre que sea posible, ya que hace que su código sea más fácil de mantener y controlar.

Sin embargo, creo que en algunos casos puede volverse demasiado complejo, ya que la actividad que aloja los fragmentos necesita navegar/comunicarse entre ellos.

Creo que deberías decidir por ti mismo qué es lo mejor para ti. Por lo general, no es tan difícil convertir una actividad en un fragmento y viceversa.

He creado una publicación sobre este dilema. aquísi desea leer más.

  • Gracias por responder y compartir su experiencia. Entonces, ¿cree que es una buena práctica en Android limitar la aplicación a una Actividad y usar Fragmento para todas las pantallas si la arquitectura de la aplicación lo permite?

    – Emil Adz

    1 de diciembre de 2013 a las 12:02

  • Depende del proyecto, pero si se te complica demasiado, también puedes dividirlo en varias actividades. No tengas miedo de usar cualquiera de los métodos. También podrías usar los dos. Tal vez a veces te resulte demasiado difícil usar fragmentos en lugar de actividades. Creo que deberías intentar usar fragmentos, pero no lo obligues a estar en todas partes si se interpone demasiado en tu camino…

    – desarrollador de Android

    1 de diciembre de 2013 a las 12:49


  • ¿Qué pasa si quiero mantener intacto este efecto de ActionBar y todo el contenido se cambia? ¿Es posible lograr esto con Actividades?

    – Emil Adz

    1 de diciembre de 2013 a las 13:08

  • ¿Qué Fragmento? youtu.be/k3IT-IJ0J98?list=PLOU2XLYxmsILe6_eGvDN3GyiodoV3qNSC

    – Emer

    1 de octubre de 2016 a las 0:04

Ya que mochila propulsora, Aplicación de actividad única es la arquitectura preferida. Útil especialmente con el Componente de arquitectura de navegación.

fuente

Dilema cuando usar Fragmentos vs Actividades
Qylin

Por qué prefiero Fragmento sobre Actividad en TODOS LOS CASOS.

  • La actividad es cara. En Fragment, las vistas y los estados de propiedad están separados, siempre que un fragmento esté en backstack, sus puntos de vista serán destruidos. Así que puedes apilar muchos más Fragmentos que Actividad.

  • Backstack manipulación. Con FragmentManager, es fácil borrar todos los Fragmentos, insertar más que en Fragmentos y etc. Pero para Activity, será una pesadilla manipular esas cosas.

  • Un mucho predecible ciclo vital. Siempre que la actividad del host no se recicle. los Fragmentos en la pila trasera no se reciclarán. Entonces es posible usar FragmentManager::getFragments() para encontrar un Fragmento específico (no recomendado).

  • Hola, leí tu reseña sobre las ventajas de Frag sobre Act. ¿Tienes algún proyecto para mostrar lo mismo en tu Github Repo?

    – Ümañg ßürmån

    15 de noviembre de 2018 a las 5:53

1646752279 504 Dilema cuando usar Fragmentos vs Actividades
Charuක

En mi opinión, no es realmente relevante. El factor clave a considerar es

  1. con qué frecuencia vas a reutilizar partes de la interfaz de usuario (menús, por ejemplo),
  2. ¿La aplicación también es para tabletas?

El uso principal de los fragmentos es crear actividades de múltiples paneles, lo que lo hace perfecto para aplicaciones que responden a tabletas/teléfonos.

  • Hola, leí tu reseña sobre las ventajas de Frag sobre Act. ¿Tienes algún proyecto para mostrar lo mismo en tu Github Repo?

    – Ümañg ßürmån

    15 de noviembre de 2018 a las 5:53

¡No olvide que una actividad es un bloque/componente de la aplicación que se puede compartir e iniciar a través de Intent! Entonces, cada actividad en su aplicación debe resolver solo un tipo de tarea. Si solo tiene una tarea en su aplicación, creo que solo necesita una actividad y muchos fragmentos si es necesario. Por supuesto, puede reutilizar fragmentos en actividades futuras que resuelvan otras tareas. Este enfoque será una clara y lógica separación de tareas. Y no necesita mantener una actividad con diferentes parámetros de filtro de intención para diferentes conjuntos de fragmentos. Las tareas se definen en la etapa de diseño del proceso de desarrollo en función de los requisitos.

  • En nuestras aplicaciones, el único tipo de tarea de la actividad es sostener el cajón de navegación para ingresar los diferentes fragmentos. 🙂 ¿Por qué debo lidiar con intentos de fragmentos? Es claro y lógico mantener una referencia estática a una clase de datos “globales” para datos globales y pasar algunos valores a un método de instancia de creación de un fragmento.

    – El increíble Jan

    24 de junio de 2019 a las 11:53

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad