2011-01-09 52 views
3

我有以下的原生程序:如何发布从本机代码发回到Java的jstring?

void sendMessage(const char* text) 
{ 
    JNIEnv* env; 

    if(!_jvm) 
     return; 

    _jvm->AttachCurrentThread(&env, NULL); 

    if(!_nativesCls) 
     _nativesCls = env->FindClass("com/foo/BaseLib"); 
    if(_nativesCls == 0) 
      return; 

    jstring message = env->NewStringUTF(text); 
    if(!_sendStr) 
     _sendStr = env->GetStaticMethodID(_nativesCls, "onMessage", "(Ljava/lang/String;)V"); 
    if(_sendStr) 
     env->CallStaticVoidMethod(_nativesCls, _sendStr, message); 
    //env->ReleaseStringUTFChars(message, text); // <----- * NOT WORKING 
} 

如果我跑这是是,它工作得很好,直到内存已满,并且我得到:

ReferenceTable溢出(最大值= 512)

我认为添加上面的注释行可以解决这个问题,但它只是导致应用程序在那一刻爆炸。

有什么建议吗?

回答