【发布时间】:2020-07-22 03:00:10
【问题描述】:
我的功能很简单,
主线程:初始化一个变量 ->
后台线程:触发网络请求,将结果赋回上一个变量->
主线程:显示该变量
代码如下:
suspend fun createCity(context: Context, newCity: MutableLiveData<NewIdea>, mapBody: Map<String, String>, token: String) {
lateinit var response: NewIdea
try {
withContext(Dispatchers.IO) {
val map = generateRequestBody(mapBody)
response = webservice.createIdea(tripId, map, "Bearer $token")
getTrip(context, token)
}
} catch (e: Exception) {
Log.e(TAG, e.message)
}
newCity.value = response
}
但有时(实际上只发生了 2 次)crashlytics 报告此行崩溃 newCity.value = response
Fatal Exception: kotlin.UninitializedPropertyAccessException: lateinit property response has not been initialized
我真的不明白这是怎么发生的。 这是从协程函数返回值的正确方法吗?
谢谢
【问题讨论】:
-
您应该在访问之前初始化响应。请查看stackoverflow.com/questions/62849053/…