Android项目实战Android开发经验谈Android开发

Android混合开发(二)——JSBridge传值注意点

2019-04-30  本文已影响5人  天一方蓝

本文出自:https://stilljin.blog.csdn.net/article/details/89164231

一丶概述

半年前做手机投屏功能,要求将同一局域网的设备列表传给前端进行交互,国庆前上线,然而就在测试前一天出问题反映情况是:iOS可以Android不行!Android的问题,加班给我改!
混合开发最最烦的事就是iOS,Android,前端配合开发,连调沟通。

二丶注意点

(1) JSBridge只能传String

查看传值源码

只能传String!!!

切忌勿撕逼
前端要JSON
对不起,我只能传String,我帮你拼接,你那边转。
为什么iOS可以你Android不行呢?
对不起,我只能传String

(2) 切勿在for循环里拼接字符串

拼接局域网内设备列表很容易写这样的代码

    /**
     * 设备信息传给前端
     * @param list
     * @return
     */
    private String listToJSON(List<TCLDeviceInfo> list) {
        if (null != list) {
            String tYlist = "";
            for (int i = 0; i < list.size(); i++) {
                String deviceList = "{" + "\"deviceIP\"" + ":" + " \"" + list.get(i).getIp() + " \"" + ","
                        + "\"deviceName\"" + ":" + " \"" + list.get(i).getName() + " \"" + "," + "\"isConnected\"" + ":" + list.get(i).isConnected() + "}";
                if (i == 0) {
                    tYlist = tYlist + deviceList;
                } else {
                    tYlist = tYlist + "," + deviceList;
                }
            }
            LogUtils.d(TAG, "[" + tYlist + "]");
            return "[" + tYlist + "]";
        } else {
            return "";
        }
    }

功能能实现,但是会被diao
为什么阿里巴巴不建议在for循环中使用"+"进行字符串拼接

从结果可以看出,用时从短到长的对比是:
StringBuilder < StringBuffer < concat < + < StringUtils.join

正确写法:

  // This is bad
  String s = "";
  for (int i = 0; i < field.length; ++i) {
    s = s + field[i];
  }
// This is better

  StringBuilder buf = new StringBuilder();
  for (int i = 0; i < field.length; ++i) {
    buf.append(field[i]);
  }
  String s = buf.toString();

(1) StringBuffer buf = new StringBuffer();在for循环外

(2).append 替代 +

三丶总结

1.切勿撕逼(浪费时间)
2.string拼接效率
StringBuilder > StringBuffer > concat > + > StringUtils.join


image.png
上一篇下一篇

猜你喜欢

热点阅读