我喜欢这样的活动
GlobalScope.launch(Dispatchers.Main) {
mainFunction()
}
和一个主要的功能乐趣
private suspend fun mainFunction() = withContext(Dispatchers.Default) {
if (test1!!) {
some code
} else {
some code
}
}
和测试1的乐趣
private suspend fun test1(start: Date): Boolean? {
try {
if (status?.code == 200) {
some code
true
} else if status?.code == 401) {
reLoginUser()
true
}
} catch (e: IOException) {
false
}
return true
}
重新登录乐趣
private suspend fun reLoginUser() {
re login code
if (loginResponse != null && statusCode == 200) {
mainFunction()
}
} else {
some code
}
}
我需要用这种方式介绍reloginuser的乐趣。从那以后,我的应用程序在执行所有操作时都会冻结。任务已完成,但应用程序冻结。我不知道这是为什么,我想它与调用mainfunction()有点关系,实际上是在mainfunction()内部。正确的方法是什么?我做错什么了?
1条答案
按热度按时间r7s23pms1#
你正陷入一个无限循环。
我猜那是你的
status.code
总是401(出于某种原因,可能是互联网连接之类的)所以你的test1
函数调用reLoginUser()
它尝试再次登录并得到相同的错误(401),导致此循环再次启动。所以,把这行注解掉:
reLoginUser()
. 如果你的代码没有冻结,那就意味着你必须重写你的代码reLoginUser()
避免陷入循环。