【问题标题】:How to set event listeners in Cordova plugin如何在 Cordova 插件中设置事件监听器
【发布时间】:2016-04-30 01:10:05
【问题描述】:

我想问一下如何在 Cordova 插件中设置自己的事件监听器。

我的 Android 有这个 Share dialog,我想让我的 Javascript 为 onShareDialogDismissonShareDialogLaunched 设置侦听器

Javascript 中可能发生的情况如下所示。

// Set a listener for dialog dismiss
document.addEventListener('onShareDialogDismiss', listenerCallback, false);

// Set a listener for dialog launch
document.addEventListener('onShareDialogLaunch', launchCallback, false);

我有这个来自 Titanium 的代码,但它使用 TiViewProxy 类,可能会知道如何在纯 Android 实现中替代 fireEvent()

谢谢!

【问题讨论】:

    标签: cordova titanium appcelerator-titanium


    【解决方案1】:

    首先你读过Cordova plugin development documentation吗?

    然后你就可以看到像cordova-plugin-network-information这样的插件是怎么做的了:

    例如检查JS interface code,其中有这些代码行来引发文档事件:

    cordova.fireDocumentEvent("offline");
    

    cordova.fireDocumentEvent("online");
    

    阅读 cordova.js 里面有这个 API 的最小文档:

    /**
     * Method to fire event from native code
     * bNoDetach is required for events which cause an exception which needs to be caught in native code
     */
    fireDocumentEvent: function(type, data, bNoDetach)
    

    另一个可用的 API 是 fireWindowEvent: function(type, data),但您可以在 cordova.js 中找到其他直接读取的 API。

    【讨论】:

    • 网络信息插件通过使用每半秒运行一次的计时器来检查状态是否已更改,从而实现了相当繁琐的“事件”。应该有一种更聪明的方法来触发事件而不使用 Javascript 计时器,实际上这是一种“作弊”方法,而不是真正的事件触发机制。
    • 我同意@andreszs。应该使用广播接收器(在 ConnectivityManager.CONNECTIVITY_ACTION 上带有过滤器)之类的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多