Android混合开发(二)——JSBridge传值注意点
16lz
2021-01-23
本文出自: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 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
更多相关文章
- Android 抢购功能(时间戳之间的倒计时)
- 去除Android系统应用的通知功能
- [zz]Android中各种JAVA包的功能描述
- 如何在android中实现swipe的手势功能及页面拖动动画
- 不同Android版本设备正确获取屏幕分辨率的通用方法
- 在Android Studio中使用Wifi连接Android设备
- Android设备通过USB线连接PC进行Socket通信
- eclipse adb 启动失败,无法匹配android设备 的解决方案