【发布时间】:2019-09-02 06:03:33
【问题描述】:
我遇到了一个非常奇怪的问题。我在FragemtA 中有一个哈希表列表(groupList)。每次运行fragmentA,都要调用checkUser函数,最后在forEach那里得到返回值显示。
var id = ""
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val userId = checkUser()
activity.groupedList.forEach {
for (i in it.value) {
Log.d(TAG, "user id in groupedList" + userId)
}
}
fun checkUser(): String {
GlobalScope.launch(Dispatchers.Main) {
val response = WebApi.getOrganizationsList(activity)
if (response?.status == "success") {
id = response?.user_id.toString()
Log.d(TAG,"id in checkUser "+id)
} else {
longToast("FAIL")
}
}
return id
}
为什么我会得到这个输出?
D/xxx: user id in groupedList
D/xxx: user id in groupedList
D/xxx: id in checkUser 46
我希望id in checkUser 46 首先显示,但不是!
期望的输出
D/xxx: id in checkUser 46
D/xxx: user id in groupedList 46
D/xxx: user id in groupedList 46
【问题讨论】:
-
在这种情况下你会阻塞 UI 线程,对吧?
-
@Blackbelt 你的意思是
checkUser函数? -
正确的那个。
-
@Blackbelt 我该如何解决?我需要使用协程从服务器获取 id
-
什么意思?您已经使用协程获取 id
标签: android kotlin retrofit coroutine