Ho scritto un plug-in Cordova per scaricare un file e salvarlo nella cartella dei dati. Tutto funziona bene tranne il valore restituito. Vorrei visualizzare una barra di avanzamento e ho bisogno di ottenere i progressi attuali. Ecco la parte rilevante dal mio codice:Uscita ritardata da Cordova Plugin
while ((readed = is.read(buffer)) > 0) {
fos.write(buffer, 0, readed);
totalReaded += readed;
int newProgress = (int) (totalReaded*100/fileSize);
if (newProgress != progress) {
progress = newProgress;
PluginResult res = new PluginResult(PluginResult.Status.OK, progress);
res.setKeepCallback(true);
callbackContext.sendPluginResult(res);
}
}
mio JavaScript:
downloader.prototype.writeFile = function (downloaderSuccess, downloaderFailure, options) {
cordova.exec(downloaderSuccess, downloaderFailure, "downloader", "writeFile", options);
};
function downloaderSuccess(progress) {
WL.Logger.debug("Result: "+progress)
}
function downloaderFailure(error) {
WL.Logger.error("Error: "+error);
}
Quello che succede è che il progresso sarà emesso solo dopo il file è stato scaricato. Se imposto il PluginResult.Status su NO_RESULT, non produrrà nulla.
Grazie per la risposta. Ho finito per utilizzare invece le funzioni di download di PhoneGap, ma indicarmi il cordova.getThreadPool era utile per altre parti dell'app :) –
Sei il benvenuto, felice che tu sia riuscito a capire qualcosa! – MBillau