Решаемые проблемы:
Пример использования:
class UserViewModel(private val repo: UserRepository) : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
_users.value = repo.getUsers()
}
}
}
Реальный кейс: Кэширование данных профиля пользователя при навигации между фрагментами
Решаемые проблемы:
Пример использования:
@Dao
interface UserDao {
@Query("SELECT * FROM users")
fun getAll(): Flow<List<User>>
@Insert(onConflict = OnConflictStrategy.REPLACE)
suspend fun insert(user: User)
}
Реальный кейс: Оффлайн-доступ к каталогу товаров в e-commerce приложении
Решаемые проблемы:
Пример использования:
class SyncWorker(appContext: Context, params: WorkerParameters) :
CoroutineWorker(appContext, params) {
override suspend fun doWork(): Result {
return try {
repository.syncData()
Result.success()
} catch (e: Exception) {
Result.retry()
}
}
}
Реальный кейс: Ежедневная выгрузка аналитики на сервер
Решаемые проблемы:
Пример использования:
<navigation xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:startDestination="@id/mainFragment">
<fragment
android:id="@+id/mainFragment"
android:name="com.example.MainFragment">
<action
android:id="@+id/toDetails"
app:destination="@id/detailsFragment" />
</fragment>
</navigation>
Реальный кейс: Единый граф навигации для 50+ экранов в банковском приложении
Решаемые проблемы:
Пример использования:
<layout>
<data>
<variable
name="viewmodel"
type="com.example.UserViewModel" />
</data>
<TextView
android:text="@{viewmodel.userName}"
android:onClick="@{() -> viewmodel.onClick()}"/>
</layout>
Реальный кейс: Форма с валидацией 10+ полей в страховом приложении
Paging 3 + Room + Flow:
Hilt + ViewModel + Repository:
CameraX + Lifecycle:
Миграция с устаревших подходов:
Оптимизация производительности:
Тестирование:
Android Architecture Components предоставляют мощный набор инструментов для решения типичных проблем мобильной разработки. В реальных проектах наиболее востребованы ViewModel, Room и WorkManager, которые в комбинации позволяют создавать устойчивые, тестируемые приложения с чистым кодом. Правильное применение этих компонентов значительно сокращает время разработки и уменьшает количество багов.