Sobes.tech
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 Activity komponenti 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ı: Activity ağır bir komponentdir, birinin istifadəsi sistemi asanlaşdırır.

Çətinliklər:

  • Deep Linking ilə çətinliklər: Yeganə Activity daxilində 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 eyni Activity daxilində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.