簡體   English   中英

是否有可能從Cordova Android插件中運行的后台線程調用javascript

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM