【发布时间】:2014-03-25 19:47:51
【问题描述】:
我正在尝试在 java 中初始化一些变量,然后将它们发送到我的本机代码。我需要延迟 nativeactivity 调用,以便 java 变量有时间进行初始化,然后可以将它们传递给本地活动。
我的主要问题是,当我从 NativeActivity 扩展我的课程(这是强制性的)时,一旦我的活动开始,本机活动就会一直被调用。在 super 之后调用 onCreate() 后,我的本机活动将自动启动,并且我的 java 变量尚未初始化。
【问题讨论】:
-
我对 boost 不熟悉。这是什么?
-
简而言之,它是一个开源的跨平台C++库。我遇到了和你类似的情况,我使用 Boost 的互斥锁和条件变量解决了这个问题。它可能会使事情变得比你的情况更复杂,所以我不会详细说明。
-
但基本方法是有某种机制,Java 应该通知 C++ 初始化完成(JNI 在 C++ 中设置一个 bool,称为 bool initComplete;JNI 函数只是设置 initComplete = true; ) 并且 C++ 端应该等到发送 Java 通知。简单的循环可能会挂起系统,但我不确定。
-
eozgonul- 我尝试使用带有我从 java 发送的标志变量的循环。如您所料,应用程序挂起。
-
在 Boost 上使用条件变量和互斥锁并不难,但让它与 Android 一起工作有时会很有吸引力。我对本机互斥锁了解不多,但这可能会有所帮助。 stackoverflow.com/questions/6144496/android-ndk-mutex
标签: android android-ndk java-native-interface native-activity