Middle
Android inkişafında Single Activity yanaşması nə deməkdir?
sobes.tech Süni İntellekt
AI-dan cavab
Tək fəaliyyət yanaşması o deməkdir ki, tətbiqdə yalnız bir Activity komponenti mövcuddur və bu əsas konteyner kimi çıxış edir. Bu Activity daxilində müxtəlif ekranların (istifadəçi interfeysi) naviqasiyası və göstərilməsi Fragment və ya View vasitəsilə həyata keçirilir.
Üstünlüklər:
- Memarlığın sadələşdirilməsi: Daha az
Activitykomponenti həyat dövrü və vəziyyətin idarə olunmasını asanlaşdırır. - Naviqasiya idarəsinin yaxşılaşdırılması: Jetpack Navigation Component istifadə edərək
Fragmentlər arasında naviqasiya qrafiklərinin qurulması daha asandır. - Yükün azaldılması:
Activityağır bir komponentdir, birinin istifadəsi sistemi asanlaşdırır.
Çətinliklər:
- Deep Linking ilə çətinliklər: Yeganə
Activitydaxilində deep linklərin işlənməsi üçün əlavə məntiq tələb oluna bilər. - Məsuliyyətlərin daha az aydın bölünməsi: Bütün
Fragmentlər eyniActivitydaxilindədir, bu isə böyük layihələrdə kod strukturunu çətinləşdirə bilər.
Single Activity-də Navigation Component-dən istifadə nümunəsi:
<!-- 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="Əsas 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="Ətraflı 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)
// Navigasiya komponenti fragmentlərin dəyişdirilməsini idarə edəcək
}
}
Bu nümunədə, MainActivity NavHostFragment-i ehtiva edir və bu, nav_graph.xml-də təyin olunan müxtəlif Fragmentların göstərilməsini idarə edir. Fragmentlar arasında keçidlər action vasitəsilə həyata keçirilir.