Skip to content

Component 直击开发中的痛点

xiaojinzi123 edited this page Oct 18, 2019 · 1 revision

痛点

我们团队在整个开发过程中, 会有几个很恶心的痛点, 代码不能不写, 但是写了又恶心. 所以在组件化过程中, 发现这些是可以被解决的的. 于是 Component 从最早的设计上就考虑了一些痛点

  • 你有没有因为在 Adater 或者 Dialog 或者其他没有 Activity 的地方需要 startActivityForResult. 痛点解决方式,0入侵
  • 你有没有因为进入一些界面有前置条件而写一些恶心代码. 比如 A 界面需要定位成功才能进去. 你可能有以下两种方式去解决. 痛点解决:Component 页面拦截器
    • 你不得不在任何一个跳转到 A 界面的地方去判断当前是否定位成功, 处理完毕之后再跳转. 这种方式恶心至极, 每次都要写一些固定代码
    • 在目标界面去处理定位的事情. 这个方式相对来说比较好, 但是它毕竟已经进入了 A 界面, A 界面需要额外考虑这些, 并且还可能要展示定位失败的视图等等
    • 你使用 ARouter 的 extra 做, 这个是一一种方式, 但是有两个问题:
      • ARouter 的路由拦截器设计在子线程, 而定位这些漫长的, 通常你希望弹个框卡住用户操作, 你会发现写起来贼恶心. Component 设计在主线程的, 但是整个跳转是 "异步的"
      • ARouter 的每个拦截器都是全局拦截器, 你每多一个这种拦截器, 都会加长整个路由的流程
  • 整合 RxJava, Component 本身完美支持 RxJava, 这样子你的跳转就可以嵌入你任何一个其他 RxJava 流程中去了. 不会像之前一样整个流程被打断
  • 你以为你写的界面, 你可以路由到就已经 ok 了吗? 其实不然, 每一个你写的界面、系统界面、第三方界面都应该是一个可路由的目标, 其他框架不能给任意一个界面标记路由. 这个也是一个痛点. 解决方案
    • 比如拨打电话界面, 是需要申请权限才能进入的. 如果你能给拨打界面标记一个路由, 并且结合上面的页面拦截器. 你会发现这件事做起来舒服至极!
    • 比如拍照界面, 需要申请相机权限. 同样可以这么处理.
    • 当然了, 适用于任何一个你觉得可以标记的界面. 并结合页面拦截器会有奇效!
  • 有些界面参数较多, 跳转入口也较多, 你会发现维护这些跳转的参数其实会比较头疼. 这时候你可以使用 类似 Retrofit 接口编程式跳转
You can’t perform that action at this time.