之前在写 Bgm38 的时候,遇到了不少的坑。之前也说过了最开始写的时候基本没考虑维护性就是想怎么写就怎么来,最近开始重构成目前流行的 MVP + RxJava + Retrofit 的形式,这篇文章主要就是记录下这个过程中遇到的一些问题作为备忘

  • BottomSheetDialog 手动向下滑动后无法再展开,解决方法
  • SwipeRefresh 必须在 onMeasure 后调用刷新显示,放在 post 中执行
  • okHttp 中的 response.body().string() 方法是会消耗 body 的,导致后面再调用该方法时始终为空
  • viewpager 的 setAdapter 方法时异步的,如果在 setAdapter 后立刻调用刷新可能此时子 fragment 还没来得及初始化导致为空,解决方法
  • Fragment 相关坑及解决方法
  • RxJava 实现 EventBus 效果,包括普通 event 及 sticky 。参考文章
  • Retrofit 使用 @Url 参数,使用这个参数同时不能使用其它参数,如 @Query 等,@Url 指定的是一个绝对链接,不再接受其它的参数,同时它也会忽视设置的 baseUrl。更多具体的文章可以查看文档或这篇文章
  • Retrofit 同时含有两个 baseUrl, 一种做法是直接定义两个 retrofit ,另外是通过 okHttp 的 interceptor 拦截,每次运行的时候动态的指定 baseUrl。Github 上的 issues 也有人提过这个问题。链接
  • Jsoup 抓取网页数据,因为返回来的数据是 html 即 String,因此我们不能使用常用的 GsonFormat,这时候可以自己重写 Converter 或者使用 Retrofit 提供给我们的 scalars

下列待补充

  • 使用 LeakCanary 发现的 InputMethod 的内存泄漏
  • MVP 模式相关使用
  • RxJava 相关

Bgm38 地址



Android      Android

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!