Android WebView / CookieSyncManager中会话cookie的生命周期

时间:2013-06-11 19:10:35

标签: android-webview session-cookies activity-lifecycle

我有一个Android应用程序,它通过WebView和HttpClient向我的Web服务器发出请求。我使用CookieSyncManager在两者之间同步cookie。到现在为止还挺好。

当我的应用程序启动时(在onResume()内),我运行一个类似于以下内容的逻辑:

if ( appHasBeenIdleFor30Minutes() ) {
     CookieManager cookieManager = CookieManager.getInstance();
     cookieManager.removeSessionCookie();
     CookieSyncManager.getInstance().sync();
}

这会正确地重置从用户上一个会话中设置的任何会话cookie。我的问题是:这种行为是否会定期发生?这个问题(android webview or browser not deleting session cookies on device reboot)似乎表明它没有。当我通过服务使用cookie-sync'd HttpClient时,似乎没有清除会话cookie,从而导致服务器端的奇怪行为。

我一直无法在WebView / CookieSyncManager中找到关于会话cookie生命周期(到期时间= 0)的具体文档 - 还有其他人有更多运气吗?

1 个答案:

答案 0 :(得分:13)

我直接收到了Google工程师的回复,他确认了我的怀疑:

  

你是对的,会话cookie不会自动失效   WebView的生命周期。   如果您发现此问题,您可以随时清除所有问题   Cookie或使用空值显式覆盖会话Cookie。

     

您建议的代码看起来像是一个很好的解决方法,请注意   使用CookieSyncManager的cookie同步不同步 -   执行startSync(),stopSync()和sync()命令   在后台线程中异步。

TL; DR - 会话cookie在WebView关闭时不会过期,您必须自己管理。