Android WebView 之Cookie

!.同步 cookie 要在 WebView 加载 url 之前,否则 WebView 无法获得相应的 cookie,也就无法通过验证。

2.cookie应该被及时更新,否则很可能导致WebView拿的是旧的session id和服务器进行通信。


cookie -------实例化

if(android.os.Build.VERSION.SDK_INT<21){

  CookieSyncManager.createInstance(context);

}

 CookieManager cookieManager = CookieManager.getInstance();

cookie-----------更新姿势

if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {

cookieManager.flush();

} else {

CookieSyncManager.createInstance(this.getApplicationContext());

CookieSyncManager.getInstance().sync();

}

cookie 获取(指定url)

private String getCookie(String url){

CookieManager cookieManager =CookieManager.getInstance();

return cookieManager.getCookie(url);

}

cookie 清除

CookieManager.getInstance().removeAllCookies(new ValueCallback() {

        @Override

publicvoidonReceiveValue(Booleanvalue)

{

            // 清除结果

        }

    });


避免WebView内存泄露的一些方式

1.以将 Webview 的 Activity 新起一个进程,结束的时候直接System.exit(0);退出当前进程;

启动新进程,主要代码:  AndroidManifest.xml 配置文件代码如下

android:name=".ui.activity.WebActivity"

android:process=":lyl.boon.process.web">

在新进程中启动 Activity ,里面传了 一个 Url:

Intent intent =newIntent("com.ui.activity.WebActivity");

Bundle bundle =newBundle();

bundle.putString("url", gankDataEntity.getUrl());

intent.putExtra("bundle",bundle);

startActivity(intent);

然后在WebActivity的onDestory() 最后加上 System.exit(0); 杀死当前进程。

2.在 Activity 销毁的时候,可以先让 WebView 加载null内容,然后移除 WebView,再销毁 WebView,最后置空。

代码如下:

@Override

protectedvoidonDestroy(){

if(mWebView !=null) {

mWebView.loadDataWithBaseURL(null,"","text/html","utf-8",null);

mWebView.clearHistory();

((ViewGroup) mWebView.getParent()).removeView(mWebView);

mWebView.destroy();

mWebView =null;

}

super.onDestroy();

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容