
在阅读这些技巧之前,您应该阅读Kotlin文档并在try.kotlinlang.org
自己学习语言。 由于这些技巧专门针对在Android开发环境中使用Kotlin,因此您也应该具有Android SDK的使用经验。 还建议您熟悉Kotlin插件以及JetBrains的Android Studio中Kotlin的使用(Kotlin的创建者)
Kotlin基本Android提示
延迟加载
延迟加载有几个优点。 例如:
- 您可以节省启动时间,因为延迟加载某些数据直到需要它为止。 对于Android尤其如此,因为用户将更快地看到应用程序的内容,而不必花很长时间等待启动和观看下载水龙头。
- 您可以节省内存,因为仅在请求时才将资源加载到设备的内存中。 这对于移动平台尤其重要,因为移动电话的资源非常有限。
例如,如果您正在创建一个购物应用程序,其中主要由您的选择来指导用户,那么可以在实际的购物API上配置延迟加载,例如,如下所示:
val purchasingApi: PurchasingApi by lazy { val retrofit: Retrofit = Retrofit.Builder() .baseUrl(API_URL) .addConverterFactory(MoshiConverterFactory.create()) .build() retrofit.create(PurchasingApi::class.java) }
使用这种延迟下载的结果是,如果用户不尝试在应用程序中进行购买,则您将不会下载该文件并使用无人认领的资源。
延迟加载也是封装初始化逻辑的好方法,例如:
val bounds: RectF by lazy { RectF(0f, 0f, width.toFloat(), height.toFloat()) }
第一次调用后,将根据当前视图的宽度和高度创建RectF实例,从而无需单独创建并设置该对象。
自定义获取器和设置器
要读取Kotlin语言的自定义设置,将使用具有指定用户行为的结构模型来获取和设置字段。 当将模型用于特定框架(例如Parse SDK)时,您选择的值不是局部类变量,而是使用自定义方法(例如,从JSON)检索和存储的值。
使用用户定义的获取和安装方法,我们可以简化访问,例如:
@ParseClassName("Book") class Book : ParseObject() {
检索这些值将类似于在其他模型中使用属性访问语法,例如:
val book = api.getBook() textAuthor.text = book.author
现在,如果您需要将模型从Parse转移到其他数据源,则实际上不需要更改代码。
拉姆达
Lambda减少了源文件中代码行的重复,并允许使用功能编程。 尽管lambda目前已在Android上使用,但Kotlin将其提升到一个新的水平,从而确保您不必处理Retrolambda或更改构建方式。
例如,听一个文件看起来像这样:
button.setOnClickListener { view -> startDetailActivity() }
这就是返回值的工作方式:
toolbar.setOnLongClickListener { showContextMenu() true }
在Android SDK中,通常需要实现其中一种方法。 lambda应对这一切。
资料类别
数据类通过自动添加
equals()
,
hashCode()
,
copy()
和
toString()
方法来简化类。 它们阐明了应在模型中使用哪些数据,从而将数据与逻辑分离。
例如,这是一个数据类:
data class User(val name: String, val age: Int)
仅此而已。 他的工作不再需要。 如果您使用的数据类与Gson或其他JSON类型库类似,则可以创建具有默认值的默认构造函数,例如:
data class User( @SerializedName("name") val name: String = "", @SerializedName("age") val age: Int = 0 )
数据集过滤
在使用API时,不断地需要处理集合。 大多数情况下,它们需要过滤或修改内容。
使用筛选集合Kotlin,您可以使代码更简单,更易懂。 您可以通过过滤集合来指定结果列表的内容,例如,
val users = api.getUsers() val activeUsersNames = items.filter { it.active } adapter.setUsers(activeUsers)
Kotlin的内置集合过滤方法与Java 8等其他编程语言中使用的方法或使用Swift集合类型的方法非常相似。 与员工交流有关执行特定操作以获取和显示必要项目清单的需求时,统一的集合过滤方法可简化相互了解。
总结了本文的第一部分,并邀请您参加有关“ Android的单元测试”主题的免费网络研讨会 。