Middle
Android өнүктүрүүдө Single Activity ыкмасы эмнени билдирет?
sobes.tech AI
AIден жооп
Жалгыз Activity ыкмасы дегенде, колдонмодо гана бир Activity компоненти бар, ал негизги контейнер катары кызмат кылат. Навигация жана бул Activity ичинде ар кандай экрандарды (пайдаланучунун интерфейси) көрсөтүү Fragmentтер же Viewтер аркылуу ишке ашырылат.
Артыкчылыктары:
- Архитектураны жөнөкөйлөтүү: Аз компоненттүү
Activityжашоонун циклин жана абалын башкарууну жеңилдетет. - Навигацияны жакшыртуу: Jetpack Navigation Component колдонуп,
Fragmentтер ортосунда навигация графиктерин түзүү оңой. - Шамалдуу чыгымдарды азайтуу:
Activity— оор компонент, бирин колдонуу системанын ишин жеңилдетет.
Кемчиликтери:
- Туңгуч шилтемелер менен кыйынчылыктар (Deep Linking): Бир
Activityичинде deep links иштетүү үчүн кошумча логика талап кылышы мүмкүн. - Жоопкерчиликтин бөлүнүшү аз көрүнөт: Бардык
Fragmentтер бирActivityичинде жайгашкан, бул чоң долбоорлордо код структурасын кыйындатышы мүмкүн, бөлүнүшү так болбосо.
Single Activityда Navigation Component колдонуу мисалы:
<!-- 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)
// Navigation компонент фрагменттердин алмашуусун башкаруу үчүн
}
}
Бул мисалда MainActivity NavHostFragment камтыйт, ал nav_graph.xml ичинде аныкталган ар кандай Fragmentтердин көрсөтүлүшүн көзөмөлдөйт. Fragmentтер ортосунда өтүүлөр аракеттер (action) аркылуу жүргүзүлөт.