我有一个 Cordova 应用程序,使用 Android 上的 native 插件(其他平台即将推出)。
我的插件在应用程序启动时加载(plugin.xml中的<param name="onload" value="true" />
),并且我的 native 代码在initialize
中执行一些工作方法(从 CordovaPlugin
类重载)。
本质上,我在 initialize
中所做的工作然后,方法会导致稍后生成一个事件,我需要将此事件传递给 javascript API。
有什么方法可以从插件的 native 端异步调用 javascript,而无需先从 javascript 端调用插件? (我认为,来自 JS->Java 的调用会给我一个 CallbackContext,我可以用它来发出回调)。
我发现了这个 https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/NativeToJsMessageQueue.java 但我不知道如何使用它,也找不到任何文档 - 我什至不确定它是否有效或是否适合公共(public)使用。
我可以使用 webview.loadUrl("javascript: ... ");
调用 javascript 端,或者这会破坏或干扰在 JS 中运行的 cordova 框架(如果有)?
是否有推荐的方法来完成此任务,是否支持跨多个平台(或者这些概念是否适用于其他平台?)
谢谢
最佳答案
目前我正在使用一种解决方法 - 我让用户调用我的插件(JS->java),这样做时他们提供了他们正在注册的回调函数。
在 Java 端,我存储 CallbackContext
供以后使用。
一件重要的事情,当你使用CallbackContext.sendPluginResult
时,这一点非常重要。 ,PluginResult
您通过的必须标有 PluginResult.setKeepCallback(true)
方法,否则第一次回调 CallbackContext 将导致上下文对以后的调用无效。
我没有注意到任何线程问题,并且我不确定(但希望)它是否适用于其他平台。
关于java - 是否可以从cordova android插件中运行的后台线程调用javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376279/