и посмотреть медиа
Kotlin | Вопросы собесов
и посмотреть медиа
Вопросы для Kotlin-разработчиков с ответами.
Вопросы для Kotlin-разработчиков с ответами.
AI бот для озвучки текста и клонирования голоса в Telegram. Создавай аудио с помощью нейросети быстро и просто.
Вопросы на Kotlin-собеседованиях: расширения, корутины, коллекции. С примерами кода и объяснениями для Android и backend.
🤔 Расскажи подробно, что из себя представляет каждый компонент Аndroid-приложения? Android-приложение состоит из четырёх основных компонентов: Activity – UI-экран приложения. Service – фоновая работа без UI. BroadcastReceiver – слушает системные и пользовательские события. ContentProvider – делится данными между приложениями. 🚩`Activity` – экран приложения (UI) Отображает интерфейс пользователя. Обрабатывает взаимодействие (нажатия, свайпы, ввод текста). Управляется системой через жизненный цикл (Lifecycle). Пример Activity class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // Загружаем XML-разметку } } 🚩`Service` – фоновая работа без UI Выполняет длительные фоновые задачи (музыка, загрузка файлов). Может работать даже если приложение закрыто. НЕ имеет UI (не рисует View). Пример Service class MyService : Service() { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { Thread { // Долгая фоновая задача }.start() return START_STICKY } override fun onBind(intent: Intent?): IBinder? = null } Запуск сервиса startService(Intent(this, MyService::class.java)) Остановка сервиса stopService(Intent(this, MyService::class.java)) 🚩`BroadcastReceiver` – обработка событий (системных и пользовательских) - Получает события системы (BOOT_COMPLETED, BATTERY_LOW). - Слушает события других приложений. - Может быть динамическим (через код) или статическим (AndroidManifest.xml). Пример BroadcastReceiver (отключение Wi-Fi) class NetworkReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.action == ConnectivityManager.CONNECTIVITY_ACTION) { println("Сеть изменилась!") } } } Регистрируем BroadcastReceiver в AndroidManifest.xml Можно зарегистрировать динамически в коде val receiver = NetworkReceiver() registerReceiver(receiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)) 🚩`ContentProvider` – обмен данными между приложениями - Дает доступ к данным *другим приложениям. - Позволяет безопасно работать с БД (Room, SQLite). - Используется для Contacts, MediaStore, Calendar. Пример ContentProvider (чтение контактов) val cursor = contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null) cursor?.use { while (it.moveToNext()) { val name = it.getString(it.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)) println("Контакт: $name") } } Запрос данных через Uri val uri = Uri.parse("content://com.example.provider/table") contentResolver.query(uri, null, null, null, null) 🚩Как компоненты взаимодействуют между собой? Пример: Activity запускает Service через Intent startService(Intent(this, MyService::class.java)) Пример: Service отправляет Broadcast, а Receiver его ловит sendBroadcast(Intent("com.example.CUSTOM_EVENT")) Ставь 👍 и забирай 📚 Базу знаний
Открыть канал и посмотреть медиаТолько зарегистрированные пользователи могут делиться своим мнением.
Станьте первым, кто поделится своим впечатлением об этом ресурсе!