私のアプリケーションは、いくつかのネイティブ コードを含む Android アプリです。
Java コードは new Thread(new Runnable) を介してスレッドを開始します。ネイティブ コードでは、AttachCurrentThread を介してそのスレッドを JVM にアタッチします。
そのスレッドで呼び出されるネイティブ関数は、単純なイベント (ブール変数) をリッスンし、適切な JNIEnv ポインターと jobject を使用して Java 側で 2 つの Java 変数を埋め、void を呼び出す別のネイティブ関数を呼び出す無限ループです。データを表示するメソッド。そのループの理由は、関数を通常どおり呼び出す (実行する割り当てと破棄が多い) オーバーヘッドが非常に大きい可能性が高いためです。
唯一の問題は、JNIEnv ポインターを更新することはできますが、jobject に対してそれを行う方法がわからないことです。
そして、jobjectとは、関数呼び出しを介してネイティブコードに渡されるjobjectを意味します
jint Java_com_example_example_MainActivity_NativeFunc( JNIEnv* env,
jobject obj)
{
return;
}