Middle
Тавре ки муносибати Single Activity дар таҳияи Android маъно дорад?
sobes.tech AI
Ҷавоб аз AI
Дастгоҳи як фаъолият маъно дорад, ки дар барнома танҳо як компонент Activity мавҷуд аст, ки ҳамчун контейнер асосӣ хизмат мекунад. Навигатсия ва намоиши экранҳои гуногун (интерфейси корбар) дар дохили ин Activity бо ёрии Fragmentҳо ё Viewҳо амалӣ карда мешавад.
Манфиатҳо:
- Осон кардани сохтор: Камтар компонентҳои
Activityидоракунии давраҳои зиндагӣ ва ҳолатро осонтар мекунад. - Беҳтар кардани коркарди навигатсия: Осонтар сохтани графҳои навигатсия байни
Fragmentҳо бо истифода аз Jetpack Navigation Component. - Кам кардани хароҷот:
Activityяк компоненти вазнин аст, истифодаи яктои он системаро осонтар мекунад.
Норасоиҳо:
- Мушкилот бо пайвандҳои амиқ (Deep Linking): Мумкин аст, ки логикаи иловагӣ барои коркарди пайвандҳои амиқ дар як
Activityзарур шавад. - Меъёри камтар равшан дар тақсимоти масъулиятҳо: Ҳамаи
Fragmentҳо дар дохили якActivityҷойгир шудаанд, ки метавонад структураи коди калонро мураккаб гардонад бе тақсимоти равшан дар модулҳо.
Маслиҳат барои истифодаи Navigation Component дар Single Activity:
<!-- 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)
// Навигатсионӣ компонент идора кардани иваз кардани фрагментҳоро хоҳад кард
}
}
Дар ин мисол MainActivity дорои NavHostFragment мебошад, ки намоиши гуногуни Fragmentҳоро, ки дар nav_graph.xml муайян шудаанд, идора мекунад. Пасҳо байни Fragmentҳо бо истифода аз амалҳо (action) амалӣ мешаванд.