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

Ant*_*hea 2 android cordova cordova-plugins

我正在编写一个自定义插件,它在后面的代码中执行一些繁重的工作。我有时想发送进度更新,以便可以在 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);
            }
    });
}
Run Code Online (Sandbox Code Playgroud)

Dav*_*den 7

您可以使用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);
      }
  });
}
Run Code Online (Sandbox Code Playgroud)