Работал ли с WebView

«Работал ли с WebView» — вопрос из категории UI и Views, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, работал. WebView позволяет отображать веб-контент внутри приложения. Основные моменты:

  • Базовая настройка:
val webView = findViewById<WebView>(R.id.webView)
webView.settings.javaScriptEnabled = true
webView.loadUrl("https://example.com")
  • Обработка навигации (чтобы ссылки открывались внутри WebView):
webView.webViewClient = WebViewClient()
  • Обработка JS-интерфейсов (взаимодействие между JS и Kotlin/Java):
webView.addJavascriptInterface(MyJsInterface(), "Android")

Важно:

  • Проверять shouldOverrideUrlLoading для безопасности.
  • Очищать кэш и историю в onDestroy().
  • Для сложных сценариев можно использовать Chrome Custom Tabs.

Проблемы:

  • Утечки памяти (нужно отделять WebView от Activity).
  • Ограничения API (например, на Android 9+ cleartextTraffic требует явного разрешения).