Middle
¿Qué significa el enfoque de Actividad Única en el desarrollo de Android?
sobes.tech AI
Respuesta de la IA
El enfoque de actividad única significa que la aplicación tiene solo un componente Activity, que actúa como el contenedor principal. La navegación y la visualización de diferentes pantallas (interfaz de usuario) dentro de esta Activity se implementan mediante Fragment o View.
Ventajas:
- Simplificación de la arquitectura: Menos componentes
Activityfacilitan la gestión del ciclo de vida y el estado. - Mejor manejo de la navegación: Es más fácil construir gráficos de navegación entre
Fragmentusando el Componente de Navegación de Jetpack. - Reducción de costos:
Activityes un componente pesado, usar uno solo facilita el trabajo del sistema.
Desventajas:
- Dificultades con enlaces profundos (Deep Linking): Puede requerir lógica adicional para manejar enlaces profundos en una sola
Activity. - División de responsabilidades menos clara: Todos los
Fragmentestán dentro de una mismaActivity, lo que puede complicar la estructura del código en proyectos grandes sin una división clara de módulos.
Ejemplo de uso del Componente de Navegación en una Actividad Única:
<!-- res/navigation/nav_graph.xml -->
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_graph"
app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="com.example.myapp.ui.main.MainFragment"
android:label="Main Fragment">
<action
android:id="@+id/action_mainFragment_to_detailFragment"
app:destination="@id/detailFragment" />
</fragment>
<fragment
android:id="@+id/detailFragment"
android:name="com.example.myapp.ui.detail.DetailFragment"
android:label="Detail Fragment" />
</navigation>
<!-- activity_main.xml -->
<androidx.fragment.app.FragmentContainerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nav_host_fragment"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="androidx.navigation.fragment.NavHostFragment"
app:navGraph="@navigation/nav_graph"
app:defaultNavHost="true"/>
// MainActivity.kt
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// El componente de navegación gestionará la sustitución de fragmentos
}
}
En este ejemplo, MainActivity contiene un NavHostFragment, que gestiona la visualización de diferentes Fragment, definidos en nav_graph.xml. Las transiciones entre Fragment se realizan mediante acciones (action).