← Назад к вопросам

Какие знаешь особенности Activity?

1.0 Junior🔥 212 комментариев
#Android компоненты#Жизненный цикл и навигация

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Особенности Activity в Android

Activity — это фундаментальный компонент приложения Android, который представляет собой отдельный экран с пользовательским интерфейсом. Вот ключевые особенности, которые каждый Android-разработчик должен понимать:

1. Жизненный цикл (Lifecycle)

Activity имеет строго определённый жизненный цикл, управляемый системой через callback-методы. Понимание lifecycle критично для предотвращения утечек памяти и корректного управления ресурсами.

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        // Инициализация UI и данных
    }
    
    override fun onStart() {
        super.onStart()
        // Activity становится видимой
    }
    
    override fun onResume() {
        super.onResume()
        // Возобновление взаимодействия с пользователем
    }
    
    override fun onPause() {
        super.onPause()
        // Приостановка активности
    }
    
    override fun onStop() {
        super.onStop()
        // Activity больше не видна
    }
    
    override fun onDestroy() {
        super.onDestroy()
        // Освобождение ресурсов
    }
}

2. Управление состоянием (State Management)

  • Bundle savedInstanceState — сохраняет состояние при повороте экрана или временном уничтожении системой
  • onSaveInstanceState() — вызывается перед уничтожением для сохранения временных данных
  • ViewModel — рекомендуемый способ хранения UI-данных, переживающих изменения конфигурации

3. Запуск и навигация (Launch Modes и Intents)

  • Launch Modes (standard, singleTop, singleTask, singleInstance) определяют поведение при создании новых экземпляров
  • Intents — механизм для запуска Activity и передачи данных между ними
  • Task и Back Stack — система управления историей навигации
// Пример запуска Activity с передачей данных
val intent = Intent(this, DetailActivity::class.java).apply {
    putExtra("item_id", 123)
    putExtra("item_name", "Пример")
    flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
}
startActivity(intent)

4. Конфигурационные изменения (Configuration Changes)

  • Автоматическое пересоздание при изменении ориентации, языка, размера экрана
  • android:configChanges — возможность самостоятельно обрабатывать изменения
  • Рекомендуется использовать ViewModel + LiveData/Flow для отделения данных от UI

5. Взаимодействие с фрагментами (Fragments)

  • Activity выступает контейнером для фрагментов
  • FragmentManager управляет транзакциями фрагментов
  • Важно координировать lifecycle Activity и вложенных фрагментов

6. Window и отображение

  • Каждая Activity имеет собственное окно (Window)
  • WindowManager управляет отрисовкой и слоями
  • Soft Input Mode — управление поведением клавиатуры

7. Обработка разрешений (Permissions)

  • Запрос разрешений во время выполнения (runtime permissions)
  • onRequestPermissionsResult() — обработка ответов пользователя
  • Необходимо учитывать сценарии отказа и повторного запроса
// Пример запроса разрешений
private fun requestCameraPermission() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) 
        != PackageManager.PERMISSION_GRANTED) {
        
        ActivityCompat.requestPermissions(
            this,
            arrayOf(Manifest.permission.CAMERA),
            CAMERA_PERMISSION_REQUEST_CODE
        )
    }
}

8. Производительность и оптимизация

  • Инициализация в onCreate() — тяжёлые операции следует выполнять в фоне
  • Избегание memory leaks — особенно с контекстом и коллбеками
  • Оптимизация layout — использование ConstraintLayout, уменьшение вложенности

9. Новые подходы и архитектура

  • Jetpack Compose — современный декларативный UI, где Activity становится точкой входа
  • Single Activity Architecture — тренд на использование одной Activity с навигацией через фрагменты/Compose
  • Lifecycle-Aware Components — компоненты, автоматически реагирующие на изменения lifecycle

10. Специфичные особенности

  • Прозрачные Activity (полупрозрачные фоны)
  • Режимы immersive (полноэкранный режим)
  • Обработка клавиш и жестов
  • Multi-window режим (разделение экрана, свободная форма)

Важное замечание: В современной Android-разработке существует движение в сторону Single Activity Architecture, где вся навигация происходит внутри одной Activity через Fragment или Jetpack Compose. Это упрощает управление состоянием, навигацией и взаимодействием с системой.

Понимание этих особенностей Activity позволяет создавать стабильные, отзывчивые приложения, которые корректно взаимодействуют с многозадачной средой Android и обеспечивают пользователю плавный опыт взаимодействия.