プロジェクト取得する
機能リストアップ
pthread_tによるサブスレッド作成
//线程
pthread_t threadInfo_;
//线程的属性
pthread_attr_t threadAttr_;
//线程初期化
pthread_attr_init(&threadAttr_);
//设置线程属性
pthread_attr_setdetachstate(&threadAttr_, PTHREAD_CREATE_DETACHED);
//设置参数g_ctx
pthread_mutex_init(&g_ctx.lock, NULL);
jclass clz = (*env)->GetObjectClass(env, instance);
g_ctx.mainActivityClz = (*env)->NewGlobalRef(env, clz);
g_ctx.mainActivityObj = (*env)->NewGlobalRef(env, instance);
//创建线程
int result = pthread_create( &threadInfo_, &threadAttr_, UpdateTicks, &g_ctx);
ネイティブ側でjavaのインスタンス作成
//取得类
jclass clz = (*env)->FindClass(env,
"com/example/hellojnicallback/JniHandler");
//类的实例化
g_ctx.jniHelperClz = (*env)->NewGlobalRef(env, clz);
//取得构造函数方法
jmethodID jniHelperCtor = (*env)->GetMethodID(env, g_ctx.jniHelperClz,
"<init>", "()V");
ネイティブ側でjavaのインスタンスメソッド呼ぶ
//取得类方法
jmethodID memFunc = (*env)->GetMethodID(env, g_ctx.jniHelperClz,
"getRuntimeMemorySize", "()J");
//执行类方法
jlong result = (*env)->CallLongMethod(env, instance, memFunc);
ネイティブ側でjavaのstaticメソッド呼ぶ
//取得静态类方法
jmethodID versionFunc = (*env)->GetStaticMethodID(
env, g_ctx.jniHelperClz,
"getBuildVersion", "()Ljava/lang/String;");
//执行静态类方法
jstring buildVersion = (*env)->CallStaticObjectMethod(env,
g_ctx.jniHelperClz, versionFunc);