LoginSignup
0
0

More than 5 years have passed since last update.

android JNIサンプル

Posted at

プロジェクト取得する

機能リストアップ

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);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0