zoukankan      html  css  js  c++  java
  • webview笔记

    1. 用户上传文件

    webChromeClient的onShowFileChooser这个方法,这将打开一个文件选择器,如果要取消这个请求则是调用filePathCallback.onReceiveValue(null)

    2. webView调用JS方法

    webView调用Js的基本格式是loadurl("JavaScript:method(参数)");

    但是如果调用的js方法有值返回,则是如下写法:  // 就是调用evaluateJavaScript方法回调

    private void evaluateJavaScript(WebView webview){ 

      webview.evaluateJavaScript("js方法名()",new ValueCallback<String>(){

        @Override

        public void onReceiveValue(String s)

          Log.e("",s);

      });

    }

    3. JS调用webView的方法

    Java方法使用JavascriptInterface注解

    @JavascriptInterface

    public void show(string hello){

      Toast.makeText().show();

    }

    注册JavaScriptInterface

    webView.addJavaScriptInterface(this,"android");// 这里是做了一个映射,映射到JavaScript的android对象中

    JavaScript调用android 方法 弹出对话框

    function getFromAndroid(){

      window.android.show("hello");

    }

    如果是调用的android 方法有返回值,则在最后调用的JavaScript处接收值就行了,var result = window.android.method(参数);

    3. webView加载优化:

    第一种方式尽量使一些资源本地化,因为最快的方式还是从本地读取资源。本地资源放在asset路径下,然后重写webviewClient的webResourceResponseShouldInterceptRequest(Webview webview,WebResourceRequest request)读取本地资源,建立cache controller机制,定期检查资源更新,保证本地资源是最细可用的。

    第二种方式就是缓存,首先在websetting里面把相关的缓存设置打开,setAppCacheEnab(),setDomstroageEnable(),setDatabaseEnable(),最重要的设置缓存模式,setCacheModel();

    因为不同的网络环境,我们要选择不同的缓存模式,默认情况下是websettings.LOAD_DEFAULT, 所以如果是网络好的情况下使用默认的方式,网络有问题是只能使用缓存的页面LOAD_CATCH_ONLY, 所以这里就要定期接受服务器通知更新缓存

    第三种方式,就是前端要做的了,对JS做延迟加载。

  • 相关阅读:
    路径
    JSTL-3
    JSTL-2
    JSTL-1
    EL和JSTL的关系
    Mybatis控制台打印SQL语句的两种方式
    centOS7安装JDK
    centOS7下安装GUI图形界面
    centOS7配置IP地址
    Office2016专业增强版永久激活
  • 原文地址:https://www.cnblogs.com/heavenStrone/p/5832101.html
Copyright © 2011-2022 走看看