android webview 基类,Android开罐头——WebView高可扩展性封装(一)

一、架构搭建

首先,我们确定第一步应该完成什么:

作为封装,一个抽象的父类是必须要的,比如初始化webView,webView的生命周期管理,因为大家知道webView容易内存泄漏。我们建立一个抽象类WebDelegate.java继承自fragment。

同时,子类实现一些具体的做法,比如webSettings的设置。

既然如此,父类就应当和子类通信,因为有些webView的设置必须在子类实现,而这些设置,应该在父类初始化webView的时候就执行。很明显,我们需要一个接口类,进行回调通信。我们建立一个接口类IWebViewInitializer。

子类通过继承获取父类数据,而父类通过接口回调获得数据。关系图:

65cf49f4e7db

初步架构通信图

二、IWebViewInitializer回调接口

我们想让子类必须实现这个接口,注意是必须,若非必须可参考onClick点击事件的设计,而由于这里是必须实现,所以我们先在WebDelegate基类中创建抽象方法:

public abstract IWebViewInitializer setInitializer();

因此,父类已经可以获取到我们的接口实例了。具体接口如下:

public interface IWebViewInitializer {

WebView initWebViewSettings(WebView webView);

//针对浏览器本身行为的控制,如前进后退的回调

WebViewClient initWebViewClient();

//针对页面的控制,如js交互

WebChromeClient initWebChromeClient();

}

子类需要实现3个具体的方法,具体实现以后再谈,我们先考虑父类。

三、父类WebDelegate

3.1 继承自fragment,首先定义一些变量,其中:

为了弱引用创建了一个引用队列

使用布尔变量mIsWebViewAvailable,这里是参考sdk里自带的WebViewFragment类(api25及其以下才有),这个类是为了显示一个WebView,而用一个布尔变量,能让web

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值