Android KTX或Anko

时间:2018-05-16 01:57:10

标签: android anko kotlin-extension android-ktx

我对使用Android KTX vs Anko的优点和缺点感到有些困惑。因为两个库都试图达到相同的最终目标,并且它们之间的界限变得有点模糊,in some cases, the same functionality is available in both libraries

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

提前致谢!

2 个答案:

答案 0 :(得分:20)

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

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

但是,Anko库在更新后已经积累了大量的方法更新,如今每个dex文件限制为65K方法时,这会使库相对较重(我更喜欢保留一个,因为apk大小和性能原因)。

Anko commons为Android提供了扩展功能,因此它在某种程度上类似于Android KTX,但它不像Android KTX那样集成和组织(包和工件明智),Android KTX现在是AndroidX的一部分,AndroidX是Android Jetpack的一部分。使库更小,更松散耦合是Android Jetpack / Android X哲学BTW的一部分。

所以 Android KTX,显然是未来,我认为没有理由不跳槽,或者更确切地说,不要让它跳进你的Android项目。

此外,as you yourself pointed out,未来的Anko版本将弃用(并可能最终删除)与Android KTX的重叠,以仅提供AndroidX中不存在的功能。

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

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

但是,Anko coroutines听众(例如可以暂停的onClick)对IMO来说并不是一个坏主意。

答案 1 :(得分:0)

Anko 是JetBrains的Kotlin库。它与Android KTX具有共同的目标,即使您成为Android开发人员的生活更加轻松,并使代码更易于阅读和使用。 Android KTX和Anko相似但不完全相同。

Anko与Android KTX之间的区别

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

确定何时使用Anko或Android KTX

通常来说,Anko和Android KTX涵盖了Android API的不同部分,因此没有理由在项目中不能同时使用两者。分别调查每个项目,并在项目中使用任意数量的