gpt4 book ai didi

android - Cordova Android 插件发送多个回调(进度)

转载 作者:行者123 更新时间:2023-12-05 00:17:09 25 4
gpt4 key购买 nike

我正在编写一个自定义插件,它在后面的代码中做了一些繁重的工作。有时我想发送进度更新,以便我可以在 Ionic 中显示它。我在 CallbackContext 中找不到合适的方法。发送成功回调只能进行一次。如何实现发送进度回调?

private void doHeavyStuff(final CallbackContext callbackContext){

something.execute(new ResponseHandler() {

@Override
public void onProgress(String message) {
callbackContext.success(message); //what else ?
}

@Override
public void onFailure(String message) {
callbackContext.error(message);
}

@Override
public void onSuccess(String message) {
callbackContext.success(message);
}
});
}

最佳答案

您可以使用 setKeepCallback() 来停止回调实例在调用时被删除,允许它被多次调用:

public boolean execute(String action, JSONArray data, CallbackContext callbackContext) throws JSONException {
if(action.equals("doHeavyStuff"){
// Start doing async heavy stuff...

// Preserve callback
PluginResult pluginResult = new PluginResult(PluginResult.Status.NO_RESULT);
pluginResult.setKeepCallback(true);
callbackContext.sendPluginResult(pluginResult);
return true;
}
}

private void doHeavyStuff(final CallbackContext callbackContext){
something.execute(new ResponseHandler() {
@Override
public void onProgress(String message) {
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, message);
pluginResult.setKeepCallback(true); // keep callback
callbackContext.sendPluginResult(pluginResult);
}

@Override
public void onFailure(String message) {
callbackContext.error(message);
}

@Override
public void onSuccess(String message) {
callbackContext.success(message);
}
});
}

关于android - Cordova Android 插件发送多个回调(进度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46580310/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com