gnm*_*itt 8 session-cookies android-webview activity-lifecycle
我有一个Android应用程序,它通过WebView和HttpClient向我的Web服务器发出请求.我使用CookieSyncManager在两者之间同步cookie.到现在为止还挺好.
当我的应用程序启动时(在onResume()内),我运行一个类似于以下的逻辑:
if ( appHasBeenIdleFor30Minutes() ) {
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeSessionCookie();
CookieSyncManager.getInstance().sync();
}
Run Code Online (Sandbox Code Playgroud)
这会正确重置从用户上一个会话中设置的任何会话cookie.我的问题是:这种行为是否会定期发生?这个问题(android webview或浏览器不会在设备重启时删除会话cookie)似乎表明它没有.当我通过服务使用cookie-sync'd HttpClient时,会显示会话cookie未被清除,从而导致奇怪的服务器端行为.
我一直无法在WebView/CookieSyncManager中找到关于会话cookie生命周期(到期时间= 0)的具体文档 - 还有其他人有更多运气吗?
gnm*_*itt 14
我直接收到了Google工程师的回复,他确认了我的怀疑:
您是对的,会话cookie不会在WebView的生命周期中自动过期.如果您发现此问题,您可以随时清除所有Cookie或使用空值显式覆盖会话Cookie.
您建议的代码看起来是一个很好的解决方法,只要知道使用CookieSyncManager的cookie同步不是同步的 - startSync(),stopSync()和sync()命令在后台线程中异步执行.
TL; DR - 会话cookie在WebView关闭时不会过期,您必须自己管理它.
| 归档时间: |
|
| 查看次数: |
10669 次 |
| 最近记录: |