我有 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 说:“等到我加载完毕”?