WebView的onScaleChanged处理程序多次调用

ped*_*000 5 android webview chromium webviewclient android-4.4-kitkat

我有自定义的WebView类,其中默认的zoomIn/zoomOut控件被禁用,我手动处理缩放事件.

我还有WebViewClient,其中onScaleChanged()处理程序被覆盖,它看起来像这样:

mWebViewClient = new WebViewClient(){
    @Override
    public void onScaleChanged(WebView view, float oldScale, float newScale) {
        super.onScaleChanged(view, oldScale, newScale);
        System.out.println("Scale changed");
    }
};
Run Code Online (Sandbox Code Playgroud)

调用zoomIn()/ zoomOut()时会出现问题,而onScaleChanged()处理程序执行多次,我会多次"缩放".每个zoomIn()/ zoomOut()事件应调用一次此事件.

另外值得一提的是,此问题仅在Android版本低于4.4的设备上发生.在Android 4.4上,每个缩放事件只调用一次处理程序(应该是这样).我在Android 4.3.1,Android 4.1.1以及Android 4.0.4(所有设备都是手机)上遇到了这个问题.

众所周知,从Android 4.4引入了Chromium驱动的WebViews,我猜这个更新已经解决了这个问题,但是我无法在Web上找到任何相关内容.

为什么在WebKit引擎支持的WebView上多次调用此处理程序,以及在Chromium支持的WebView上,它按预期工作?