慎用 AndroidX 库

从 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。比如我在一个项目中试图实现嵌套滑动:

《慎用 AndroidX 库》 嵌套滑动示例

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

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

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

《慎用 AndroidX 库》 使用 AndroidX 以后的结果

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

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

    原文作者:穆晓炜
    原文地址: https://www.jianshu.com/p/641d683f78d5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞