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
$('#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, "");