Очевидно, что создание файла не удается на Android на нативной стороне, если уже существует множество AssetFileDescriptors

Для целей бенчмаркинга я повторяю загрузку данных из актива и обработку их с помощью Superpowered SDK. Для открытия актива с помощью Superpowered SDK я создаю AssetFileDescripter afd на стороне Java и сделать вызов JNI с путем к apk, afd.getStartOffset() а также afd.getLength() в качестве параметров. В этой функции JNI я загружаю актив с помощью SuperpoweredDecoder и создаю новый файл (/storage/emulated/0/result.wav) для сохранения результата.

Проблема в том, что когда я создаю новый AssetFileDescripter в каждой итерации теста на стороне Java создания файла /storage/emulated/0/result.wav с Superpowered SDK происходит сбой после 971 итерации, или большую часть времени 995 итераций.

Если я использую только один и тот же AssetFileDescripter для всех итераций все работает нормально, и я могу сделать 1000 и более эталонных итераций.
У кого-нибудь есть идеи? (Android-версия моего тестового устройства — 4.4.2)

Буду благодарен за все подсказки.

0

Решение

Закрытие дескриптора файла ресурсов после каждой итерации решило мою проблему. Кажется, действительно существует ограничение, зависящее от устройства, относительно дескрипторов открытых файлов. (Перейдите по ссылке на вопрос в комментариях)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]