Middle
Que signifie l'approche Single Activity dans le développement Android?
sobes.tech IA
Réponse de l'IA
L'approche d'activité unique signifie que l'application ne comporte qu'un seul composant Activity, qui sert de conteneur principal. La navigation et l'affichage de différents écrans (interface utilisateur) à l'intérieur de cette Activity sont réalisés à l'aide de Fragment ou View.
Avantages:
- Simplification de l'architecture : Moins de composants
Activityfacilite la gestion du cycle de vie et de l'état. - Meilleure gestion de la navigation : Il est plus facile de construire des graphes de navigation entre
Fragmenten utilisant le Composant de Navigation de Jetpack. - Réduction des coûts :
Activityest un composant lourd, l'utiliser seul facilite le travail du système.
Inconvénients:
- Difficultés avec les liens profonds (Deep Linking) : Peut nécessiter une logique supplémentaire pour gérer les liens profonds dans une seule
Activity. - Division des responsabilités moins claire : Tous les
Fragmentsont dans une mêmeActivity, ce qui peut compliquer la structure du code dans de grands projets sans une division claire des modules.
Exemple d'utilisation du Composant de Navigation dans une activité unique :
<!-- 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)
// Le composant de navigation gérera le remplacement des fragments
}
}
Dans cet exemple, MainActivity contient un NavHostFragment, qui gère l'affichage de différents Fragment, définis dans nav_graph.xml. Les transitions entre Fragment sont effectuées à l'aide d'actions (action).