WebView и domStorageEnabled: сохраняются куки с задержкой

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

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        webViewSetup()
    }
    @SuppressLint("SetJavaScriptEnabled")
    private fun webViewSetup() {
        wb_WebView.webViewClient = WebViewClient()
        wb_WebView.apply {
            loadUrl("https://test.ru")
            settings.javaScriptEnabled = true
            settings.domStorageEnabled = true
        }
    }
    override fun onBackPressed() {
       if (wb_WebView.canGoBack()) wb_WebView.goBack() else super.onBackPressed()
    }
}

Ответы (1 шт):

Автор решения: ЮрийСПб

Куки сначала сохраняются в оперативную память а потом, с некоторой задержкой - в постоянную. Это поведение можно изменить, вручную инициирую сохранение кук в постоянную память.


Попробуйте вручную инициировать сохранение кук на диск так:

CookieSyncManager.createInstance(context);
CookieSyncManager.getInstance().sync();

В комментах по ссылке сказано, что код выше - устарел и надо использовать его замену - синхронную запись на диск кук, находящихся в оперативке:

CookieManager.getInstance().flush()
→ Ссылка