多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 一切皆可自定义 ![](https://img.kancloud.cn/3e/70/3e70a67b52715063a543c310e3d1bca5_459x435.jpg) **产品需求:** 当用户发送的消息内容包含敏感词时,需要做发送失败处理,对方无法接收到消息,但需要展示在聊天列表,点击红色感叹号提示发送失败。 **解决方案:** 由于使用的是环信SDK,一开始想的解决方案有:a,在消息发送前设置消息状态(无效);b,设置消息接收人为空(iOS有效,Android无效);c,手动写入消息到本地消息数据库(消息UI无法控制);d,数据库取回消息后,展示前插入敏感词消息(实现复杂,需要自己维护敏感词消息)。最终的解决方案:考虑到我们之前有使用自定义消息,采用自定义消息的形式,但是将自定义消息的UI做成普通的消息UI即可,点按发送消息按钮时,直接调用存储消息接口。 # 数据类型引发的bug **问题:** rap上录入的接口直接转换为Java bean,但是实际后台接口返回的数据类型不匹配,易造成显示问题 # ListView视图类型的复用问题 **问题:** IM聊天界面新增了一种视图类型,但是由于之前代码使用ListView实现,且业务逻辑异常混乱错杂,上线后出现View复用时出现异常,在需要紧急修复bug的情况下,进行代码重构太过耗时。 **解决方案:** 新增的视图类型与原有的相似类型进行布局共用,根据itemViewType来控制布局内容的具体展示。当然这只是在时间紧急情况下的一种解决临时方案,还是应找出View复用异常的原因并处理。 # 运行时权限问题 **问题:** 工信部返回的问题是应用内部频繁请求定位权限,初期无法重现 **解决方案:** 经排查,由于原先只适配6.0以下版本系统,未加入动态申请权限代码。后期加入动态申请代码时,未添加完整,导致多处未动态申请权限,直接调用了定位的相关代码。造成用户在使用时没看到在申请定位权限,但其实应用一直在进行定位。 # 布局文件中控件id重复问题 **问题:**在Java代码中根据id获取控件并设置文本,文本不显示。debug发现TextView并不为空,要设置的目标文本也不为空。直接将TextView内容写死可以显示,因此字体颜色这些并无问题。 **解决方案**经仔细查看布局文件,布局文件中使用include标签引入其他布局,其他布局中存在和当前布局中id名相同的空间。但由于没在一个布局文件中,Android Studio并不会报错,因此在设置文本的时候设置的都是其他布局中的TextView。恰巧其他布局在一开始又是隐藏不显示的,造成更改当前布局中控件无效的假象。 # LinearLayout方向问题要注意 记得设置LinearLayout的排列方向