小编air*_*run的帖子

如何从NDK C++线程调用Java API?

我想从NDK C++线程调用Java API,但是env-> FindClass()返回0.但是当我在主线程中调用Java API时,它运行良好.我已经在线程中调用AttachCurrentThread(),任何人都可以帮助我吗?

这是源代码:

JAVA代码:

public class simple_test extends Activity {
    ...
    // This functin will be called in C++
    public void PrintNdkLog(String slog) {
        Log.e(logTagNDK, slog);
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)

C++代码:

static JavaVM* g_JavaVM = NULL;

jobject getInstance(JNIEnv *env, jclass obj_class)
{
    jmethodID  c_id = env->GetMethodID(obj_class, "<init>", "()V");
    jobject obj = env->NewObject(obj_class, c_id);
    return obj;
}

// JNI OnLoad
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void* reserved)
{
    g_JavaVM = jvm;
    return JNI_VERSION_1_6;
}

// Call JAVA API "PrintNdkLog" …
Run Code Online (Sandbox Code Playgroud)

java-native-interface android

11
推荐指数
1
解决办法
2万
查看次数

如何在Android NDK中创建一个线程?

谁能告诉我如何在Android NDK中创建一个线程?我正在将一些C++代码从Win32移植到Android,我不知道什么是与Win32 API AfxBeginThread()对应的NDK API.谢谢!

multithreading android android-ndk

10
推荐指数
1
解决办法
7992
查看次数