android - 创建 Retrofit 服务类 Kotlin

标签 android kotlin retrofit2

创建改造实例的最合适方法是什么?(不一定在下面的 3 个选项之间) 这3种方式有什么区别?

选项 1

object BuffApi {
    val retrofitService : BuffApiService by lazy {
        retrofit.create(BuffApiService::class.java)
    }
}

选项 2

object BuffApi {
    val retrofitService2: BuffApiService = retrofit.create(BuffApiService::class.java)
}

选项 3

class BuffApi {
    val retrofitService: BuffApiService = retrofit.create(BuffApiService::class.java)
}

最佳答案

如果您有可能不调用 retrofitService ,或者不频繁调用,则最好使用选项 1 - val RetrofitService : BuffApiService by lazy {因为在您访问或调用变量retrofitService之前,您的程序不会初始化它,从而减少内存使用。

在另一种情况下,Option_2 会有所帮助,因为它是静态的,您不必每次想要访问它时都创建一个新对象,而且使用单个 Service 实例也是很好的做法,例如 (retrofit存储库)类。

Option_2 和 Option_3 的字节码生成几乎相同:40 和 64 行:但对于 Option_1 约为 146 行

关于android - 创建 Retrofit 服务类 Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64269156/

相关文章:

android - 通过 intents 传递大量数据时崩溃 - extras 包是否有大小限制?

java - android AlarmManager setRepating延时问题

java - 始终返回到我的应用程序的主表单/Activity

kotlin - 为什么 Kotlin 反编译器生成 null.INSTANCE

java - 无法通过 ToolProvider 找到 jpackage

android - 这是初始化接口(interface)的最佳方法。 ( Activity 框架)?

android - 通过 `Dispatchers.IO` 启动协程时出现 NetworkOnMainThreadException

java - 如何使用 GSON 和 Retrofit2 反序列化多形状 JSON 响应?

java - 尝试将自定义通用 gson 解串器迁移到 jackson

java - Log.e 在拦截器中产生一些问题