Android アプリケーションで同時実行の問題があります。問題の基本は、Java コードが C 関数を呼び出し、C コードがロードされる前に JNI インターフェースを介して値を設定しようとすることです。C関数をMainActivity.java
呼び出すものとNativeLib.java
C共有ライブラリをロードするものがあります。この同時実行性の問題を解決するエレガントな方法はありますか? CからいくつかのJavaフィールドをtrue
ロードが終了したときに設定し、その値がtrueになるまでMainActivityメソッドをロックすることによって? それとも、他のより良い解決策がありますか?
エンジンの基本図です。GLThread
ループ内で、メソッドはonDrawFrame guardedRun()
() を呼び出し、JNI 呼び出しを C に送信してフレームをレンダリングし、guardedRun()
新しい GL フレームを受信すると、フレーム バッファーをスワップします。
問題はメソッドにありonMessageReceived()
ます。今、Activity on startup を別のデバイスに接続したいのですが、接続したときに Java から C に送信されるメッセージを受信したいのですが、問題は C がまだロードされておらず、Java が既に起動して接続されていることです。 . では、C はどのように Java に「ロードされるまで待ってください」と言いますか?