Android NDKで作ったスレッドでJavaを呼ぶ

JNIEnvオブジェクトはスレッド毎に管理されている。

NDKで別スレッドを作成した場合、そのスレッド用のJNIEnvオブジェクトを準備する必要がある。



スレッド構築前にやる事

・JavaVMオブジェクトを取得する

JNIEnvクラスのGetJavaVMメソッドで取得できる



NDKで作られたスレッド内でやる事

・上記で取得したJavaVMオブジェクトを引数などで渡してもらう


スレッド開始時にJavaVMへ接続する

JavaVMクラスのAttachCurrentThreadメソッドでこのスレッド用のJNIEnvを取得する


取得したJNIEnvを使ってJavaへアクセスする


・スレッド終了時にJavaVMへの接続を終了する

JavaVMクラスのDetachCurrentThreadメソッドを呼び出す