1

Android アプリケーションで同時実行の問題があります。問題の基本は、Java コードが C 関数を呼び出し、C コードがロードされる前に JNI インターフェースを介して値を設定しようとすることです。C関数をMainActivity.java呼び出すものとNativeLib.javaC共有ライブラリをロードするものがあります。この同時実行性の問題を解決するエレガントな方法はありますか? CからいくつかのJavaフィールドをtrueロードが終了したときに設定し、その値がtrueになるまでMainActivityメソッドをロックすることによって? それとも、他のより良い解決策がありますか?

エンジンの基本原理

エンジンの基本図です。GLThreadループ内で、メソッドはonDrawFrame guardedRun()() を呼び出し、JNI 呼び出しを C に送信してフレームをレンダリングし、guardedRun()新しい GL フレームを受信すると、フレーム バッファーをスワップします。

問題はメソッドにありonMessageReceived()ます。今、Activity on startup を別のデバイスに接続したいのですが、接続したときに Java から C に送信されるメッセージを受信したいのですが、問題は C がまだロードされておらず、Java が既に起動して接続されていることです。 . では、C はどのように Java に「ロードされるまで待ってください」と言いますか?

4

1 に答える 1

1

明らかな答えは次のとおりです。

C 関数を呼び出す前に、C コードがロードされていることを確認してください

質問で詳細を提供するまで、回答で詳細を提供することはできません.

于 2013-03-27T12:52:02.933 に答える