【发布时间】:2014-09-09 14:10:26
【问题描述】:
我的问题是,假设我有一个带有单例的 c++ 类,并通过 JNI 方法调用这个单例,每次我从 java 调用到 c++ 时,单例变量是否会因为它的静态而改变,还是保持不变?并且每次我从 java 调用到 c++ 时它是否在新线程上运行该方法?
示例代码:
在 Java 中:
class NativeLib
{
public native void updateFrame();
}
在 C/C++ 中:
JNIEXPORT void JNICALL Java_com_Company_NativeLib_NativeLib_updateFrame()
{
sceneManager::getInstance()->updateFrame();
}
sceneManager::getInstance() 在每次调用时是否返回新实例或最新创建的实例,因为它是一个静态变量。
我在 android 中的主要问题是我的应用程序崩溃而没有显示任何类型的 logCat 信息为什么它崩溃了。
但如果我评论 sceneManager::getInstance()->updateFrame(); ,它永远不会崩溃,所以我认为当 Java 调用 C++ 时它位于一个新线程中,这意味着静态变量不会
【问题讨论】:
标签: java android c++ android-ndk java-native-interface