zoukankan      html  css  js  c++  java
  • Atitit.android  jsbridge v1新特性

    Atitit.android  jsbridge v1新特性

     

    1. Java代码调用js并传参其实是通过WebViewloadUrl方法去调用的、只是参数url的写法不一样而已1

    2. 三、JAVAJS交互注意事项1

    3. Js调用android java通过jsbridge2

    4. JsBridge3

    5. WebView   Error calling method on NPObject5

     

     

     

    只能返回str类型,要死obj类型,就是{}...js提示是个obj,json2str是个{}...空的对象..

     

    1. Java代码调用js并传参其实是通过WebViewloadUrl方法去调用的、只是参数url的写法不一样而已

     

    // 无参数调用

    contentWebView.loadUrl("javascript:javacalljs()");// 传递参数调用

     

    2. 三、JAVAJS交互注意事项

    1、Java 调用 js 里面的函数、效率并不是很高、估计要200ms左右吧、做交互性很强的事情、这种速度很难让人接受、而js去调Java的方法、速度很快、50ms左右、所以尽量用js调用Java方法

    2、Java 调用 js 的函数、没有返回值、调用了就控制不到了

    3、Js 调用 Java 的方法、返回值如果是字符串、你会发现这个字符串是 native 的、转成 locale 的才能正常使用、使用 toLocaleString() 函数就可以了、不过这个函数的速度并不快、转化的字符串如果很多、将会很耗费时间

    4、网页中尽量不要使用jQuery、执行起来需要5-6秒、最好使用原生的js写业务脚本、以提升加载速度、改善用户体验

     

    作者::  ★(attilax)>>>   绰号:老哇的爪子  全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊  汉字名:艾龙,  EMAIL:1466519819@qq.com

    转载请注明来源: http://www.cnblogs.com/attilax/

     

    3. Js调用android java通过jsbridge

    function btn()

    {

    try{

    var r=jsBridge.invoke("com.example.atiplat_vodcp.browExtObj.retStr","testStr..");

       alert("raw r:"+r);   

      try{

      r=JSON.stringify(r);

      }catch(e){

      alert( "str2json e:"+e);

      }

    alert("ret from jsbrd:"+r);

    }catch(e)

    {

    alert(e);

    }

     

    }

    4. JsBridge

    import java.io.PrintWriter;

    import java.io.StringWriter;

    import java.lang.reflect.InvocationTargetException;

    import java.net.URLEncoder;

    import java.util.concurrent.Callable;

     

    import org.apache.commons.lang3.reflect.ConstructorUtils;

    import org.apache.commons.lang3.reflect.MethodUtils;

     

    import com.attilax.exception.ExUtil;

    import com.attilax.ref.refx;

     

    import android.content.Intent;

    import android.net.Uri;

    import android.os.Environment;

    import android.os.Handler;

    import android.util.Log;

    import android.webkit.JavascriptInterface;

    import android.widget.Toast;

     

    public class JsBridge {

    public static String getTrace(Throwable t) {

    StringWriter stringWriter = new StringWriter();

    PrintWriter writer = new PrintWriter(stringWriter);

    t.printStackTrace(writer);

    StringBuffer buffer = stringWriter.getBuffer();

    return buffer.toString();

    }

     

    MainActivity mainActivity;

     

    public JsBridge(MainActivity mainActivity2) {

    mainActivity = mainActivity2;

    }

    // sdk17�汾���ϼ���ע�� solu click btn ma fein ..

    @JavascriptInterface  

    public    String invoke(final String method, final Object... p1) {

     

    String classname = refx.getClassName(method);

    String meth_name = refx.getMethodName(method);

    Object o;

    boolean flag = true;

    String trace = "$def e";

    try {

    o = ConstructorUtils.invokeConstructor(Class.forName(classname),

    null);

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    // throw new RuntimeException(e);

    flag = false;

    trace = ExUtil.getTrace(e);

    return trace;

    }

     

    if (flag) {

    try {

    return (String) MethodUtils.invokeMethod(o, meth_name, p1);

    } catch (Exception e) {

    // TODO Auto-generated catch block

    e.printStackTrace();

    // throw new RuntimeException(e);

    trace = ExUtil.getTrace(e);

    return trace;

    }

    }

    // Handler handler = new Handler();

    // // Callable<V>

    // handler.post(new Runnale(){

    //

    // public void run(){

    //

    // // 更新UI界面元素代码

    //

    // }

    //

    // });

    // handler.

    return trace;

     

    }

     

    5.  WebView   Error calling method on NPObject

    直接android throw yg ex.走中个兰..不个ex  try给挂摇..转换成个str输出出来走ok...

     

  • 相关阅读:
    Alpha版与Beta版
    URL的概念
    正则表达式(即:匹配模式Pattern)
    前置与后置的递增/递减操作符
    【平板电脑模拟器】PC端-Chrome自带的功能
    【HOSTS相关】前端提供测试模板地址
    【netlimiter】的使用
    <转>window.event对象在ie与ff中的区别
    <转>全面理解javascript的caller,callee,call,apply概念(修改版)
    document.styleSheets以及js中实现样式表的切换、样式的增加减少
  • 原文地址:https://www.cnblogs.com/attilax/p/5342711.html
Copyright © 2011-2022 走看看