13

我对使用Android KTX vs Anko的优缺点有点困惑。因为这两个库都试图实现相同的最终目标,并且它们之间的界限变得有点模糊,所以在某些情况下,两个库中都提供了相同的功能

如果您帮助我阐明每个人的使命及其用例,我将非常感激。

提前致谢!

4

2 回答 2

24

Anko 是 JetBrains 在开发 Kotlin 并使其与 Android 相关时开始的一个项目。我认为它是 Kotlin 可能性的早期生产就绪展示。

Anko 以 Anko 布局而闻名,但在 Anko Commons 中也有一些用于 Android 开发的扩展,还有一些其他模块,如 SQLite。

然而,Anko 库在更新后积累了大量的方法更新,这使得该库在每个 dex 文件被限制为 65K 方法时变得相对重量级(出于 apk 大小和性能原因,我更喜欢使用单个方法)。

Anko commons 为 Android 提供扩展,因此它在某种程度上类似于 Android KTX,但它的集成和组织(包和工件方面)不如 Android KTX,后者现在是 AndroidX 的一部分,它是 Android Jetpack 的一部分。使库更小、更松耦合是 Android Jetpack / Android X 哲学 BTW 的一部分。

因此,Android KTX 显然是未来,我认为没有理由不加入这艘船,或者更确切地说,不让它加入您的 Android 项目。

此外,正如您自己指出的那样,未来的 Anko 版本将弃用(并且可能最终删除)与 Android KTX 的重叠,以仅提供 AndroidX 中没有的功能。

包括一个无耻的插件: 既然你在谈论 Anko,如果 Anko 布局引起了你的注意,但你经历过与它们的斗争(尤其是在与自定义或第三方视图交互时),我建议你查看 Views DSL in Splitties,它比 Anko 布局更灵活,而且非常轻量级。您可能也对其他模块感兴趣。我开始这个项目是为了在工作和家里的 Android 项目中利用 Kotlin 功能。

你没有问过这个问题,但这是我对 Anko 协程的看法:我发现bg { … }扩展令人困惑。我更喜欢将 kotlinx.coroutines 与 Android 工件一起使用,使用launch,withContext等,以及Dispatchers.IO.

然而,Anko 协程监听器(例如onClick,可以挂起)在 IMO 中并不是一个坏主意。

于 2018-05-17T21:48:02.567 回答
0

Anko是 JetBrains 的一个 Kotlin 库。它与 Android KTX 的目标相同,即让您作为 Android 开发人员的生活更轻松,并使您的代码更具可读性和易用性。Android KTX 和 are Anko 相似但又不完全相同。

Anko 和 Android KTX 的区别

他们有共同的目标,但考虑的范围不同。KTX 的使命是为 Kotlin 用户带来惯用的 API。KTX 不打算向现有的 Android API 添加新功能。Anko 的范围更广,这使其能够灵活地进行创新和创建新功能

决定何时使用 Anko 或 Android KTX

一般来说,Anko 和 Android KTX 涵盖了 Android API 的不同部分,你没有理由不能在你的项目中同时使用它们。单独研究每一个,并在您的项目中尽可能多地使用它们!

于 2020-04-10T11:06:13.650 回答