سؤال

كيف يتم الاحتفاظ بالدولة عند الوصول إلى الأساليب من خلال 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 كمتغير عالمي (كما فعلت في مثالك) ، سيتم مشاركته خلال التطبيق بأكمله.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top