2014-06-23 17 views
1

我有一個使用Android(即將發佈的其他平臺)上的本機插件的Cordova應用程序。是否有可能從運行在科爾多瓦android插件中的後臺線程調入javascript

我的插件在應用程序啓動時加載(<param name="onload" value="true" /> in plugin.xml),我的本機代碼在initialize方法中執行了一些工作(從CordovaPlugin類中超載)。

本質上,我在initialize方法中做的工作會導致稍後生成一個事件,並且我需要將此事件傳遞給JavaScript API。

有沒有什麼辦法可以從插件的本地側異步調用JavaScript,而不必先從JavaScript端調用插件? (來自JS-> Java的調用會給我一個CallbackContext,我可以用它來發出回調,我假設)。

我發現這個 https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/NativeToJsMessageQueue.java ,但我不知道如何使用它,我無法找到任何文件 - 我甚至不知道,如果它的工作原理或擬供公衆使用。

我可以使用webview.loadUrl("javascript: ... ");來調用JavaScript端,還是會干擾或干擾在JS中運行的cordova框架(如果有的話)?

有acomplishing本的推薦方式,並且是它支持跨多個平臺(或者是概念適用於其他平臺?)

感謝

回答

0

目前我使用一種變通方法 - 我有用戶通過我的插件(JS-> java)調用,這樣做時它們提供了它們正在註冊的回調函數。

在Java方面,我隨後儲存了CallbackContext供以後使用。 一個重要的事情是,當您使用CallbackContext.sendPluginResult時,您傳遞的PluginResult必須用PluginResult.setKeepCallback(true)方法標記,否則第一次回調到CallbackContext將導致上下文對於將來的調用變爲無效。

我沒有注意到任何線程問題,我不知道(但有希望),它適用於其他平臺。

相關問題