Частный просмотр устарел в Android WebView с API 17. Какая альтернатива?

Спецификация API читается следующим образом для конструктора WebView, который разрешает приватный просмотр:

(из http://developer.android.com/reference/android/webkit/WebView.html)

WebView (контекст контекста, attributeSet attrs, int defStyle, логический privateBrowsing)

Этот конструктор устарел на уровне API 17. Частный просмотр больше не поддерживается напрямую через WebView и будет удален в будущей версии. Предпочитаете использовать WebSettings, WebViewDatabase, CookieManager и WebStorage для точного управления данными конфиденциальности.

По сравнению с API 19 (KitKat) частный просмотр отключен. Попытка вызвать этот конструктор со значением истинных результатов в исключении IllegalArgumentException.

Предлагаемые альтернативы не будут даже незначительно эффективны при воспроизведении поведения частного просмотра. Класс CookieManager - одноэлементный, причем все настройки применяются ко всему приложению. При таком подходе нет "мелкозернистого контроля данных конфиденциальности". Единственный элемент управления, предоставляемый CookieManager, - это возможность полностью отключить файлы cookie, для КАЖДОГО WebView, присутствующего в приложении. Это изменение означает, что сторонние браузеры больше не могут реплицировать частную функцию просмотра собственного браузера Google в любой емкости.

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

Ответ 1

В дополнение к тому, что у меня есть в комментарии, это еще одно место, где оправдано наличие нескольких процессов. Поскольку CookieManager является одноэлементным, отдельные процессы будут иметь отдельные экземпляры CookieManager. Экземпляры "Частный просмотр" WebView могут быть в отдельном процессе из экземпляров "обычного просмотра" WebView.

У этого есть минусы:

  • Они не могут находиться в одном действии, так как View из одного процесса не может быть отображен в другом процессе. Таким образом, если метафору пользовательского интерфейса для браузера подразумевает несколько WebView виджетов в одном действии (например, вкладки), необходимо, чтобы метафору UI нужно было настроить, чтобы разрешить "переключение контекста" между обычным и приватным просмотром.

  • Это будет потреблять больше системной памяти, что плохо для пользователя, хотя и хорошо для разработчика (меньше вероятности исключений OutOfMemoryError).