app冻结

xmakbtuz  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(599)

我喜欢这样的活动

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()内部。正确的方法是什么?我做错什么了?

r7s23pms

r7s23pms1#

你正陷入一个无限循环。
我猜那是你的 status.code 总是401(出于某种原因,可能是互联网连接之类的)所以你的 test1 函数调用 reLoginUser() 它尝试再次登录并得到相同的错误(401),导致此循环再次启动。
所以,把这行注解掉: reLoginUser() . 如果你的代码没有冻结,那就意味着你必须重写你的代码 reLoginUser() 避免陷入循环。

相关问题