1

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

4

1 回答 1

1

显而易见的答案是:

确保在调用 C 函数之前加载 C 代码

在您在问题中提供详细信息之前,我们无法在答案中提供太多详细信息。

于 2013-03-27T12:52:02.933 回答