В настоящее время я работаю над приложением, которое получит и сохранит несколько фотографий и видео в локальной файловой системе. (В среднем 40 фотографий и 10 видео на пользователя)
Для этого я загружаю медиа с сервера, а затем записываю его на телефон.
Мне кажется, что процесс написания довольно медленный, и я прихожу, чтобы объяснить вам мою проблему, чтобы узнать, действительно ли это аномалия или это правильное время и что это кордова или просто ограничения Android.
Для проверки производительности я создал пустой проект Cordova, чтобы не искажать значения из-за инфраструктуры или другой задачи, которую приложение использует одновременно.
Вот функция, которая будет писать в смартфоне:
function write(blobObject) {
t0 = performance.now();
var path = cordova.file.externalApplicationStorageDirectory;
window.resolveLocalFileSystemURL(path, function (directoryEntry) {
directoryEntry.getFile('toto.iso', { create: true, exclusive: false }, function (fileEntry) {
fileEntry.createWriter(function (fileWriter) {
var writed_size = 0;
var chunk_size = 0.251024;
var writeChunk = () => {
fileWriter.onwrite = function() {
if (writed_size < blobObject.size) {
writeChunk();
}
else {
t1 = performance.now();
}
};
if (writed_size) {
fileWriter.seek(fileWriter.length);
}
var seeked_data = blobObject.slice(writed_size, writed_size + Math.min(chunk_size, blobObject.size - writed_size));
fileWriter.write(seeked_data);
writed_size += Math.min(chunk_size, blobObject.size - writed_size);
}
writeChunk();
});
}, function() {alert('error');});
});
}
Запись файла 5MB занимает в среднем 2385ms
Запись файла 10MB занимает в среднем 4774ms
Запись файла *1024* 50MB занимает в среднем 21867ms
Как вы думаете, это мой способ поступать неправильно, и если да, то почему?
Или, как мне кажется, это просто ограничения из-за Кордовы?
Я тестирую на Honor 6X.
Большое спасибо за вашу помощь.