[英]Is it possible to call into javascript from a background thread running in a cordova android plugin
我有一個在Android上使用本機插件的Cordova應用程序(以后還會有其他平台)。
我的插件在應用程序啟動時加載(plugin.xml中的<param name="onload" value="true" />
),並且我的本機代碼在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框架(如果有)?
有沒有建議的方法來完成此操作,並且它在多個平台上都受支持(或者該概念是否適用於其他平台?)
謝謝
當前,我正在使用一種解決方法-我已將用戶調用到我的插件(JS-> java),並為此提供了他們正在注冊的回調函數。
然后,在Java端,我存儲CallbackContext
以便以后使用。 重要的一點是,當您使用CallbackContext.sendPluginResult
,必須通過PluginResult.setKeepCallback(true)
方法標記傳遞的PluginResult
,這非常重要,否則,第一次回調CallbackContext會導致上下文無效將來的電話。
我還沒有注意到與此相關的任何線程問題,而且我不確定(但有希望)它是否適用於其他平台。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.