JNIでnativeからJavaをコールバックするには?…JNIは分かりづらい

Callback mechanism from native to java ?? - android-ndk | Google グループ

Androidに限らず、JNIを使ってnativeの関数を呼び出すのは良いのだけど、逆に非同期でnativeからJavaにコールバックしたいときはどうするの?というケースは意外と多いんじゃないかと思う。

どうも、AttachCurrentThread()とやって、コールバック元のnativeスレッドをDalvikVMに関連づければ良さそうなんだけど...。

native層でさらに別プロセスとプロセス間通信とかやってたりしたらもう少し厄介なのかなぁ...。でもVMのすぐ下にあるJNIのnative層はVMと同じプロセスなはずだから、getVM()か何かでVMへの参照は取れるって事なのかな...。

JNI関係はそこそこニーズがあるものの、ちゃんとまとまった情報があまり無い感じ。AndroidなんかもNDKや独自ハードへの移植とかを考えると、JNIのノウハウはけっこう大事になってきそうだけどね。

コメント

タイトルとURLをコピーしました