4
有沒有任何方法可以將回調傳遞給來自C的java代碼,並且調用立即返回。稍後,完成任務後,java代碼可以調用該回調。jni中的回調
我有一個C的擴展名爲php,調用一個java商店來存儲一些項目。這些項目可以通過同步和異步方法從商店中獲取(我向商店提供了密鑰列表和回調,並且它會調用回調並返回其中的項目)。
我能夠從擴展同步檢索項目,但現在我不知道如何異步做到這一點。
- 有沒有什麼辦法可以讓我的C代碼提供一個指向java可以稍後調用的函數的指針?
- 或者是否有可能我每次創建一個java線程C代碼要求異步檢索項目,然後java線程調用一個C函數,可以將項目返回給用戶?
作爲最後的手段我可能必須創建在C代碼線程,該線程,它可以從Java檢索排隊鍵。
或者zend中是否有任何支持,允許我排隊執行任務,以及zend可以爲隊列中的每個任務逐一調用的回調?
這個本地函數調用會給我一個有效的JniEnv指針,這個指針已經被C程序加載了嗎? 創建類的新實例並將其傳遞給java很重要嗎? 你能否提供一些示例代碼。 – ata 2009-09-08 18:42:33
例如函數聲明本地int回調(字符串);將具有C簽名jint Java_com_mypackage_MyClass_callback(JNIEnv * env,jobject class_instance,jstring參數) - 您有env,指向具有回調和所有參數的類的指針。我會盡力在稍後提供示例代碼 – Xeor 2009-09-08 23:45:57