android - 无法在 Cordova 3.4 中使用异步方法。第一次调用插件方法后不调用 onsuccess

标签 android cordova phonegap-plugins cordova-3 cordova-plugins

以下代码不能正常工作:

public class TestPlugin extends CordovaPlugin {
   public static CallbackContext callbackContext;

   class TestRun implements Runnable {
      public void run() {
         try {
            Thread.sleep(10000);
         } catch (InterruptedException e) {}

         PluginResult result = new PluginResult(PluginResult.Status.OK, callbackContext.getCallbackId()); 
         result.setKeepCallback(false); 
         callbackContext.sendPluginResult(result); 
      }
   }

   @Override
   public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
      this.callbackContext = callbackContext;
      TestRun tr = new TestRun();
      new Thread(tr).start();
      return true;
   }
}

JS代码:

var Test = {
   getBTPrinters: function(successCallback, errorCallback) {
      cordova.exec(successCallback, errorCallback, "TestPlugin", "test", []);
      setTimeout(function(){ cordova.exec(successCallback, errorCallback, "TestPlugin", "test", []); }, 30000);
   }
}

当我第一次从 TestPlugin 调用方法时,我的 Javascript 代码中的回调 onsuccess 没有被调用。
当我第二次从这个插件调用方法时,我从第一次调用中得到 onsuccess 回调。
在第三次调用插件的方法后,我从第二次调用中得到 onsuccess 回调。
等等等等。 是Cordova/Phonegap的bug吗?
或者我以错误的方式使用了我的插件?

最佳答案

不断调用 exec 将强制处理消息。

setInterval(function () {
    cordova.exec(null, null, '', '', [])
}, 200);

关于android - 无法在 Cordova 3.4 中使用异步方法。第一次调用插件方法后不调用 onsuccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23934173/

相关文章:

java - 使用activity_main 或content_main 做什么?

android - 查找两点之间的距离(纬度/经度)

javascript - Dropbox 选择按钮在 ios8 中不返回

ios - 在 Phonegap iOS 应用程序中使用预填充数据库

Android Phonegap 版本 2.0 或更高版本 facebook、twitter、消息等共享插件的任何更新

android - 如果我安装了 Facebook 应用程序,我的 Facebook 登录 Android 应用程序将不会打开 session

java - Android 停止正在执行单个库函数的线程

android - 在 Android/Cordova/Knockout 中使用数字输入捕获 "Enter"按键

ios - Phonegap 应用在 IOS 后台运行

javascript - PhoneGap - 打开外部应用程序