我对使用Android KTX vs Anko的优点和缺点感到有些困惑。因为两个库都试图达到相同的最终目标,并且它们之间的界限变得有点模糊,in some cases, the same functionality is available in both libraries。
如果您帮助我澄清每个人的使命及其使用案例,我将非常感激。
提前致谢!
答案 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工件一起使用,使用launch
,withContext
等,以及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的不同部分,因此没有理由在项目中不能同时使用两者。分别调查每个项目,并在项目中使用任意数量的
!