我的Android应用程序存在并发问题。一个问题的基础是Java代码在加载C代码之前试图通过JNI接口调用C函数和设置值。我有MainActivity.java
调用C函数和NativeLib.java
加载C共享库。
有没有任何优雅的方法来解决这个并发问题,例如。通过在加载完成时从C某些Java字段设置为true
并锁定MainActivity方法直到该值为真?或者也许还有其他更好的解决方案?
这是引擎的基本图表。在GLThread
中,在循环中,方法guardedRun()
调用onDrawFrame(),它将JNI调用发送到C以呈现帧,然后,当guardedRun()
接收到新的GL帧时,它交换帧缓冲区。
问题在于方法onMessageReceived()
。现在,我想在启动时将Activity连接到另一台设备,当它连接时,我想接收将从Java发送到C的消息。但问题是C尚未加载且Java已经启动并已连接。那么,C如何对Java说:“等到我加载”?
答案 0 :(得分:1)
显而易见的答案是:
确保在调用C函数之前加载C代码。
在您提供问题的详细信息之前,我们无法在答案中提供更多详细信息。