2013-03-27 41 views
1

我有Android應用程序的併發問題。問題的根源在於Java代碼在加載C代碼之前試圖調用C函數並通過JNI接口設置值。我有調用C函數的MainActivity.java和加載C共享庫的NativeLib.java。 有沒有什麼優雅的方法來解決這個併發問題,例如。通過在加載完成時從C某個Java字段設置爲true並鎖定MainActivity方法直到該值爲真?或者也許還有其他更好的解決方案?如何在Java/C應用程序中實現鎖定

Basic principle of engine

這是引擎的基本示意圖。在GLThread的循環中,方法guardedRun()調用onDrawFrame(),它將JNI調用發送給C來渲染幀,然後當guardedRun()接收到新的GL幀時,它交換幀緩衝區。

問題在於方法onMessageReceived()。現在,我想在啓動時將Activity連接到另一個設備,並且當它連接時,我想要接收將從Java發送到C的消息。但是,問題在於C尚未加載並且Java已啓動並已連接。那麼,C如何對Java說:「等到我加載」?

回答

1

明顯的答案是:

確保C代碼調用C函數之前加載。

我們不能在我們的答案中提供很多細節,除非您在您的問題中提供詳細信息。

相關問題