Приложение Flutter сбои с «исчерпываемым пространством кучи» при использовании изолята для извлечения файлов медиаAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Приложение Flutter сбои с «исчерпываемым пространством кучи» при использовании изолята для извлечения файлов медиа

Сообщение Anonymous »

Я строю приложение Galler Gallery , которое сканирует внешнее хранилище устройства и загружает изображения и видео. Я использовал изолят , чтобы принести все поддерживаемые мультимедийные пути и извлечь метаданные. Однако приложение сбоя со следующей ошибкой: < /p>

Код: Выделить всё

E/DartVM  (20411): Exhausted heap space, trying to allocate 131104 bytes.
< /code>
Журнал повторяется много раз, пока приложение не остановится. Вот упрощенная версия моего изолята: < /p>
Future _getSupportedMediaPathsInIsolate(SendPort sendPort) async {
final appDir = await getExternalStorageDirectory();
final files = Directory(appDir!.path).listSync(recursive: true);
final supportedPaths = [];

for (final file in files) {
final path = file.path.toLowerCase();
if (isSupportedImageFile(path) || isSupportedVideoFile(path)) {
supportedPaths.add(file.path);
}
}

sendPort.send(supportedPaths);
}
< /code>
И в основном потоке я поротаю изолят и получаю список путей файла для отображения в пользовательском интерфейсе. I assume it's because the isolate is trying to collect too many media paths and send them all at once.

✅ What I’ve Tried:
[list]
[*]Verified that listSync(recursive: true)
may return thousands of files
[*]Tried increasing heap size (not possible in Flutter AFAIK)
[*]Researched better memory handling in isolates
[/list]

💡 My Idea:
I’m thinking to avoid using Isolate and instead process media using a Dart Stream — yielding one image at a time and displaying it in the UI as Это извлечено. Сканирование больших каталогов и обновление пользовательского интерфейса без проблем с памятью? Многие файлы


Подробнее здесь: https://stackoverflow.com/questions/795 ... fetch-medi
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»