Какие базовые Android-компоненты можете назвать?android-54

1. Activity

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

Назначение:

  • Основной компонент для UI, представляет один экран с пользовательским интерфейсом
  • Работает как точка входа для взаимодействия пользователя

Ключевые особенности:

  • Имеет жизненный цикл (onCreate, onStart, onResume, onPause, onStop, onDestroy)
  • Может запускать другие Activity через Intent
  • Может получать результаты от других Activity

2. Fragment

class MyFragment : Fragment() {
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        return inflater.inflate(R.layout.fragment_my, container, false)
    }
}

Назначение:

  • Модульная часть UI, который может использоваться в нескольких Activity
  • Позволяет создавать гибкие и адаптивные интерфейсы

Ключевые особенности:

  • Собственный жизненный цикл (привязан к жизненному циклу Activity)
  • Может добавляться/удаляться динамически
  • Поддерживает back stack (FragmentManager)

3. Service

class MyService : Service() {
    override fun onBind(intent: Intent): IBinder? = null

    override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
        // Выполнение фоновой работы
        return START_STICKY
    }
}

Назначение:

  • Выполнение длительных операций в фоне
  • Работа без пользовательского интерфейса

Типы сервисов:

  • Started Service - запускается явно, работает до завершения задачи
  • Bound Service - предоставляет интерфейс для взаимодействия с другими компонентами
  • Foreground Service - сервис с уведомлением (обязателен с Android 8+)

4. BroadcastReceiver

class MyReceiver : BroadcastReceiver() {
    override fun onReceive(context: Context, intent: Intent) {
        when (intent.action) {
            Intent.ACTION_AIRPLANE_MODE_CHANGED -> {
                // Обработка изменения режима полета
            }
        }
    }
}

Назначение:

  • Реагирование на системные и кастомные события (broadcast)
  • Примеры событий: изменение заряда батареи, подключение к сети, SMS

5. ContentProvider

class MyProvider : ContentProvider() {
    override fun query(
        uri: Uri,
        projection: Array<String>?,
        selection: String?,
        selectionArgs: Array<String>?,
        sortOrder: String?
    ): Cursor? {
        // Возвращает данные по запросу
    }
}

Назначение:

  • Управление доступом к структурированным данным
  • Предоставление данных другим приложениям
  • Работа с SQLite, файлами, сетью через единый интерфейс

6. Android Jetpack Components

Современные компоненты, рекомендуемые Google:

  1. ViewModel - хранение и управление UI-данными
  2. LiveData - observable-контейнер данных
  3. Room - абстракция над SQLite
  4. WorkManager - управление фоновыми задачами
  5. Navigation - управление навигацией между экранами

Взаимодействие компонентов

// Запуск Activity из другой Activity
val intent = Intent(this, SecondActivity::class.java)
startActivity(intent)

// Связь Activity и Fragment
supportFragmentManager.beginTransaction()
    .replace(R.id.container, MyFragment())
    .commit()

// Запуск Service
val serviceIntent = Intent(this, MyService::class.java)
startService(serviceIntent)

// Регистрация BroadcastReceiver
val filter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
registerReceiver(myReceiver, filter)

Резюмируем:

  1. Activity - основной UI-компонент для экранов
  2. Fragment - модульные части UI для гибких интерфейсов
  3. Service - фоновая работа без UI
  4. BroadcastReceiver - обработка системных событий
  5. ContentProvider - управление и предоставление данных
  6. Jetpack Components - современные архитектурные компоненты

Понимание этих компонентов и их взаимодействия - основа разработки Android-приложений.