失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Android混合开发(二)——JSBridge传值注意点

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

时间:2021-11-21 08:26:09

相关推荐

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

本文出自:https://stilljin./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 badString s = "";for (int i = 0; i < field.length; ++i) {s = s + field[i];}// This is betterStringBuilder 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

如果觉得《Android混合开发(二)——JSBridge传值注意点》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。