Site icon AppTractor

Что такое Single Activity архитектура в Android

В последние годы Single Activity архитектура набирает популярность в разработке Android-приложений. Такой подход предполагает использование единственной Activity, внутри которой осуществляется навигация между различными экранами. Давайте разберёмся, в чём преимущества этого подхода, как его реализовать и какие инструменты помогут упростить работу с ним.

Раньше каждое окно в приложении было отдельной Activity, но это вызывало сложности в управлении. Теперь создаётся только одна Activity, а все экраны – это её части (фрагменты), которыми проще управлять.

Почему Single Activity?

Традиционно Android-приложения строились на основе множества Activity, где каждая представляла отдельный экран. Однако такой подход имеет ряд недостатков:

Single Activity архитектура решает эти проблемы, предлагая использовать одну Activity и множество фрагментов (Fragment) для представления различных экранов. Управление навигацией и состоянием становится более предсказуемым и удобным.

Что такое Single Activity архитектура в Android

Реализация Single Activity архитектуры

Основной инструмент, который делает этот подход удобным, – это Navigation Component от Google. Он упрощает управление фрагментами и навигацией между ними.

1. Настройка Navigation Component

Для начала добавьте зависимости в файл build.gradle:

dependencies {
    implementation "androidx.navigation:navigation-fragment-ktx:2.5.3"
    implementation "androidx.navigation:navigation-ui-ktx:2.5.3"
}

2. Создание Navigation Graph

Navigation Graph – это XML-файл, в котором определены возможные экраны (фрагменты) и пути переходов между ними. Он создаётся в res/navigation/nav_graph.xml:

<?xml version="1.0" encoding="utf-8"?>
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    app:startDestination="@id/firstFragment">

    <fragment
        android:id="@+id/firstFragment"
        android:name="com.example.app.FirstFragment"
        android:label="First Screen">
        <action android:id="@+id/action_to_secondFragment"
            app:destination="@id/secondFragment" />
    </fragment>

    <fragment
        android:id="@+id/secondFragment"
        android:name="com.example.app.SecondFragment"
        android:label="Second Screen" />
</navigation>

3. Настройка навигации в MainActivity

В activity_main.xml добавьте NavHostFragment, который будет контейнером для всех фрагментов:

<androidx.fragment.app.FragmentContainerView
    android:id="@+id/nav_host_fragment"
    android:name="androidx.navigation.fragment.NavHostFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:navGraph="@navigation/nav_graph" />

В MainActivity.kt настройте NavController:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

4. Переходы между экранами

В каждом фрагменте можно использовать findNavController() для навигации:

view.findNavController().navigate(R.id.action_to_secondFragment)

Преимущества Single Activity архитектуры

Недостатки Single Activity архитектуры

Заключение

Single Activity архитектура делает Android-разработку более удобной и предсказуемой. Используя Navigation Component и ViewModel, можно создать гибкое и масштабируемое приложение с простым управлением навигацией. Если вы ещё не пробовали этот подход, самое время начать!

Exit mobile version