MentosWeb:一款轻巧强大的Android WebView框架,独立进程,支持JsBridge,扩展方便

834 阅读1分钟

WebView基本是每个app的标配,WebView的主要功能除了访问h5页面,就是需要用来支持Js和native交互,MentosWeb支持JsBridge,只需要在业务层继承接口,使用@AutoService注解,然后实现具体业务即可,使用非常简单方便。 并且MentosWeb是独立进程,使用aidl和主进程交互,能大量减少WebView引起的OOM。

WX20220119-163000@2x.png 一款轻巧而又功能强大的Android WebView,使用命令模式,@AutoService实现业务层,AIDL跨进程通信,支持JsBridge,具备强大的扩展能力。

功能

  • MentosWeb独立进程,使用AIDL通信,降低OOM。
  • 提供Activity和Fragment两种形式供使用。
  • 支持JsBridge,在业务层实现接口即可和js进行交互,扩展性极强。
  • 支持是否启用顶部进度条以及设置进度条颜色。
  • 支持是否启用下拉刷新以及设置刷新控件颜色。
  • 支持是否启用ActionBar,支持设置ActionBar背景颜色,返回按钮,标题大小和色值(开发中)。
  • 支持沉浸式设置(开发中)。

演示

演示1演示2

使用

1、gradle引入依赖
repositories {
    ...
    mavenCentral()
}
implementation 'io.github.exciter-z:mentosweb:1.0.0'
2、添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
3、业务层实现

web传入命令和参数 示例:openPage为命令,{targetPage:page}为参数

function openNativePage(page){
      mentosWeb.invokeNativeAction("openPage",{targetPage:page})
}

native继承Command处理命令

@AutoService(Command::class)
class OpenPageCommand : Command {
    override fun name(): String {
        return "openPage"
    }

    override fun execute(
        parameters: Map<*, *>,
        callback: ICallbackFromMainprocessToWebViewProcessInterface?
    ) {
        //todo 处理业务逻辑
    }
}

架构

MentosWebArchitecture.png

项目地址

exciter-z/MentosWeb: 一款轻巧而又功能强大的Android WebView,支持跨进程通信、支持JsBridge、具备强大的扩展能力。 (github.com)