Middle
Ko nozīmē pieeja Single Activity Android izstrādē?
sobes.tech AI
Atbilde no AI
Vienas aktivitātes pieeja nozīmē, ka lietotnē ir tikai viena Activity komponenta, kas darbojas kā galvenais konteineris. Navigācija un dažādu ekrānu (lietotāja saskarnes) attēlošana šajā Activity tiek īstenota ar Fragmentiem vai Viewiem.
Priekšrocības:
- Arhitektūras vienkāršošana: Mazāk
Activitykomponentu atvieglo dzīves cikla un stāvokļa pārvaldību. - Uzlabota navigācijas pārvaldība: Viegli veidot navigācijas grafus starp
Fragmentiem, izmantojot Jetpack Navigation komponentu. - Izdevumu samazināšana:
Activityir smags komponents, viena izmantošana atvieglo sistēmas darbu.
Trūkumi:
- Dziļu saite (Deep Linking) grūtības: Var būt nepieciešama papildu loģika, lai apstrādātu deep links vienā
Activity. - Mazāk skaidra atbildības sadalīšana: Visi
Fragmenti atrodas vienāActivity, tas var sarežģīt koda struktūru lielās projektos bez skaidras moduļu sadalīšanas.
Piemērs, izmantojot Navigation komponentu vienā aktivitātē:
<!-- 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="Galvenais fragments">
<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="Detalizēts fragments" />
</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)
// Navigācijas komponenta pārvaldīs fragmentu maiņu
}
}
Šajā piemērā MainActivity satur NavHostFragment, kas pārvalda dažādu Fragmentu attēlošanu, kas ir definēti nav_graph.xml. Pārejas starp Fragmentiem tiek veiktas ar (action).