PhoneGap 1.0.0-Android 2.1/2.3-无法使PhoneGap插件异步工作

PhoneGap 1.0.0-Android 2.1/2.3-无法使PhoneGap插件异步工作,android,cordova,Android,Cordova,我想做的是: 用户填写表单数据,单击提交 用户显示一个加载屏幕。(HTML元素) 应用程序进行异步调用,PhoneGap插件将此数据保存在db中。这就是问题所在,因为调用是同步的 当html应用程序收到回调时,我隐藏加载屏幕 因为同步呼叫,我得到的是: 用户填写表单,提交 HTML应用程序冻结,数据正在保存到数据库中 加载屏幕出现 在几毫秒后调用回调 以下是一些演示(修剪)代码: 爪哇: JavaScript: $('#loading-screen').show(); var successC

我想做的是:

  • 用户填写表单数据,单击提交
  • 用户显示一个加载屏幕。(HTML元素)
  • 应用程序进行异步调用,PhoneGap插件将此数据保存在db中。这就是问题所在,因为调用是同步的
  • 当html应用程序收到回调时,我隐藏加载屏幕
  • 因为同步呼叫,我得到的是:

  • 用户填写表单,提交
  • HTML应用程序冻结,数据正在保存到数据库中
  • 加载屏幕出现
  • 在几毫秒后调用回调
  • 以下是一些演示(修剪)代码:

    爪哇:

    JavaScript:

    $('#loading-screen').show();
    
    var successCallback = function() {
        console.log('Success Callback');
        $('#loading-screen').hide();
    };
    var failureCallback = function() {
        console.log('Failed Callback');
        $('#loading-screen').hide();
    };
    
    PhoneGap.exec(successCallback, failureCallback, 'PluginName', 'actionName', data);
    
    来自PhoneGap来源:

    * Execute a PhoneGap command.  It is up to the native side whether this action is synch or async.
    * The native side can return:
    *      Synchronous: PluginResult object as a JSON string
    *      Asynchrounous: Empty string ""
    * If async, the native side will PhoneGap.callbackSuccess or PhoneGap.callbackError,
    * depending upon the result of the action.
    
    所以我想在这种情况下,这句话可能是不正确的:

    new PluginResult(Status.OK, "");
    
    注意:如果wrap(JavaScript)PhoneGap.exec在setTimeout中调用(例如延迟1秒),加载屏幕将“正常”工作(仍然冻结,但用户有即时反馈),但这显然不是一个解决方案

    我想我只是在这里没有看到一些明显的东西,只是一个参数或某处


    谢谢。

    我认为这是一个完美的选择 只需在doInBackground中处理数据存储,并在onPostExcecute()中处理完成。
    您可以在onProgressUpdate中自由更新状态,我知道如何使用AsyncTask,但我仍然认为phonegap插件缺少一些东西。因为我认为isSynch函数应该这样做。
    new PluginResult(Status.OK, "");