Android KTX或Anko

13

3
KTX 是由 Android 团队维护的一个较新的项目。我不会感到惊讶,如果发现有些功能正在从 Anko 中复制或重写。 - OneCricketeer
1
我对协程也有同样的问题。现在标准库中已经提供了协程,所以也许可以弃用anko? - hardysim
2个回答

24
Anko是JetBrains在开发Kotlin并使其适用于Android时启动的项目。我认为它是展示Kotlin可行性的早期生产就绪的示范项目。
Anko以Anko布局而闻名,但还为Android开发提供了Anko Commons扩展,并且还有一些其他模块,例如SQLite。
然而,Anko库在更新后积累了大量的方法,这使得当您限于每个dex文件的65K个方法时,该库相对较重(出于apk大小和性能原因,我更喜欢使用单个dex文件)。
Anko Commons提供了Android的扩展功能,因此在某种程度上与Android KTX类似,但其组织结构(包和构件方面)不像Android KTX那样良好集成和组织。让库变得更小,更松散耦合是Android Jetpack / Android X哲学的一部分。
因此,Android KTX显然是未来,我认为没有理由不加入这个船,或者说不让它加入您的Android项目。
此外,正如您自己指出的那样,未来的Anko版本将弃用(并可能最终删除)与Android KTX的重叠部分,仅提供AndroidX中不存在的功能。

包含自我推销: 既然你在谈论Anko,如果Anko布局引起了你的注意,但是你在使用它们时遇到了困难(特别是与自定义或第三方视图交互时),我建议你检查Splitties中的Views DSL,它比Anko布局更灵活,非常轻量级。其他模块也可能会对您感兴趣。我开始这个项目是为了利用Kotlin功能在我的工作和家庭Android项目中。

虽然你没有询问,但这是我的Anko协程看法: 我觉得bg { … }扩展很令人困惑。我更喜欢使用带有Android构件的kotlinx.coroutines,使用launchwithContext等,以及Dispatchers.IO

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


感谢您详细的回答,真的帮了我们很多! - Arturo Mejia
@Louis CAD,Anko布局是否可以迁移到Android KTX和/或XML?因为我正在处理一个使用Anko布局设计的项目,而且由于最近IDE更新,Anko支持库预览不起作用,而Anko团队也没有发布任何更新。因此,拥有转换方法将会很有帮助。 - TankRaj
@Krantiz 没有这样的东西。但是,您可以在自定义视图中集成Anko布局(例如FrameLayout子类),然后可以在xml中预览它。这就是我在Splitties Views DSL中所做的。如果您需要更深入的建议,可以在Kotlin的Slack或Twitter DM上向我提问。 - Louis CAD

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的不同部分,您可以在项目中同时使用两者。单独调查每个库并在项目中根据需要使用即可!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接