【发布时间】:2021-08-24 20:18:00
【问题描述】:
我有两节课。首先是 MainActivity.kt,我有一个字符串。二是这样的ServiceBuilder.kt
object ServiceBuilder {
private const val URL = "https://someLink.com" // <------------- In here I should transfer the string in my MainActivity.kt class
// Create Logger
private val logger = HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)
// Create a Custom Interceptor to apply Headers application wide
val headerInterceptor = object: Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
request = request.newBuilder()
.addHeader("x-device-type", Build.DEVICE)
.addHeader("Accept-Language", Locale.getDefault().language)
.build()
val response = chain.proceed(request)
return response
}
}
// Create OkHttp Client
private val okHttp = OkHttpClient.Builder()
.callTimeout(5, TimeUnit.SECONDS)
.addInterceptor(headerInterceptor)
.addInterceptor(logger)
// Create Retrofit Builder
private val builder = Retrofit.Builder().baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.client(okHttp.build())
// Create Retrofit Instance
private val retrofit = builder.build()
fun <T> buildService(serviceType: Class<T>): T {
return retrofit.create(serviceType)
}
}
我需要正确地将字符串从 MainActivity 传输到该对象。我认为在 ServiceBuilder 中创建 MainActivity 对象并不是一个好主意,因为它分配了多余的内存。使用数据库或 SharedPreferences 也不是一个好主意,因为这种调用会减慢程序的运行速度,而这种技术是为解决其他问题而创建的。
请告诉我解决这个问题的正确方法 附言我现在这个问题很简单,但我现在不知道如何设计应用架构
【问题讨论】:
标签: java android kotlin retrofit2