慎用 AndroidX 库

作者: 穆晓炜 | 来源:发表于2018-10-28 14:41 被阅读493次

    从 API 28(Android 9.0,Pie)开始,Google 推荐开发者从原来的各种支持库转移到一个新版本的名为 AndroidX 的支持库。它相比老支持库有着无需操心版本控制、实时更新的优点。原有的支持库将被保留并且可以继续使用,但接下来所有新的支持都将发布在 AndroidX 上。

    比如我们在我们的资源布局文件当中使用 RecyclerView,如果不使用 AndroidX 的话会引用 android.support.v7.widget.RecyclerView,而如果配置工程使用 AndroidX 的话会引用 androidx.recyclerview.widget.RecyclerView

    Google 希望开发者可以尽快使用 AndroidX 以获得最新的支持,但是当我尝试将我自己的项目支持库转移到 AndroidX 库时发现会有 bug。比如我在一个项目中试图实现嵌套滑动:

    嵌套滑动示例

    比方说上图的这个例子,一个 BottomSheet 里面有一个 RecyclerView,在下拉列表时如果拉到顶部时不松手继续向下拉,BottomSheet 就会向下滑动回到底部(BottomSheetBehavior.STATE_COLLAPSED)状态。

    实现这个嵌套滑动比较简单,只要实现 NestedScrollViewonStartNestedScroll() 方法和 onNestedPreScroll() 方法就可以了。

    不过当我点击 Android Studio 的 Refactor > Migrate to AndroidX... ,将项目的支持库全部更新到 AndroidX 后,再次运行 app,结果成了这个样子:

    使用 AndroidX 以后的结果

    经检查,发现 onStartNestedScroll() 方法和 onNestedPreScroll() 方法都没有执行。因为转移前后代码没有更改过,所以我还不知道为什么会出现这样的结果,可能是 AndroidX 的一个 bug,我想。

    虽然 Google 声称在 2018 年 9 月 21 日后发行的 AndroidX 1.0.0 是稳定版本,但从之前各个 Beta 版本的发行说明来看,关于 RecyclerView 的 bug 还会有不少。所以我推荐大家目前还是使用比较稳定的旧版支持库,毕竟是使用了几年的版本了。不过大家也可以尝试一下这个新的库,看看还会有什么样的问题存在。

    相关文章

      网友评论

      • 孤诣:别着急,过段时间再说吧
      • 容华谢后:AndroidX不是基于28.0.0版本开发的吗,咋还会出现这样的问题
        穆晓炜:@容华谢后 官方在开发指南里也说会有可能不稳定🤷🏻‍♂️

      本文标题:慎用 AndroidX 库

      本文链接:https://www.haomeiwen.com/subject/qvvptqtx.html