حالة تطبيق JNI
-
21-09-2019 - |
سؤال
كيف يتم الاحتفاظ بالدولة عند الوصول إلى الأساليب من خلال JNI؟ في المثال أدناه ، يدعو رمز Java الخاص بي بالطريقة الأصلية DrawFromJni ، هل سيتم استمرار فئتي الأصلية _nc بين المكالمات؟
إذا كانت هناك أدوات تصحيح أخطاء أصلية أفضل لـ NDK ، فسيكون من السهل جدًا معرفة ذلك ، لكنني أواجه حقًا مشاكل مع NDK و C ++.
extern "C" {
JNIEXPORT void JNICALL Java_com_jnitest_SurfaceRenderer_drawFromJni(JNIEnv * env, jobject obj);
};
myNativeClass _nc;
JNIEXPORT void JNICALL Java_com_jnitest_SurfaceRenderer_drawFromJni(JNIEnv * env)
{
_nc.draw();
}
المحلول
يتبع تنفيذ وظائف JNI قواعد النطاق للغة التي تنفذها. إذا أعلنت _NC كمتغير عالمي (كما فعلت في مثالك) ، سيتم مشاركته خلال التطبيق بأكمله.
لا تنتمي إلى StackOverflow