编译时会报错,信息是:Type checking has run into a recursive problem.Easiest workaround:specify types of your deslarations explicitly.
语言和环境(Andorid studio Kotlin)
本人状态(很久没碰android了,简单地看了下kotlin)
程序主要需求:
上网查询数据,返回结果,执行操作。
代码执行流程 :
1、MainActivity创建一个Handler,接收消息;
2、创建了一个访问网络的类ClassA,将MainActivity传入,其中的函数使用suspend申明,以通过协程挂起,使用IO线程访问网络;
3、MainActivity中通过协程调用ClassA的函数FuncA;
4、FuncA执行完毕后,通过Handler发送消息至MainActivity中的消息接受部分;
5、Handler中执行一部分代码后,再次调用ClassA中的另一个函数FuncB,FuncB执行完成后通过Handler发送消息,问题就出在这里!
简要代码如下:
//1、MainACTIVITY中----------------------------------
mScope.Lanuch{
ClassA.FuncA();
}
//2、ClassA的FuncA中-----------------------------
MainActivity.mHandler.sendMessage(msg)
//3、MainActivity中Handler接受中------------------------
mScope.Lanuch{
ClassA.FuncB();
}
//4、ClassA的FuncB中-------------------------------
MainActivity.mHandler.sendMessage(msg)//这里编译报错
错误表现:
一旦编译就会出现上述错误。
但有一点很神奇的是,一旦我注释掉sendMessage的代码,编译完成后;再取消注释,再执行就能成功编译运行(编译成功并达到了目标)。
核心需求:
其实最核心的功能需求就是协程执行完后,如何传递返回值;
我的问题:
1、目前的用法我感觉是有点别扭的,是应该用广播传值?还是其他方式?
2、这个错误到底指什么,如果说是代码检测到有无限递归的风险而停止编译,那我应该怎么pass掉这个递归的错误检查;