Для целей бенчмаркинга я повторяю загрузку данных из актива и обработку их с помощью 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)
Буду благодарен за все подсказки.
Закрытие дескриптора файла ресурсов после каждой итерации решило мою проблему. Кажется, действительно существует ограничение, зависящее от устройства, относительно дескрипторов открытых файлов. (Перейдите по ссылке на вопрос в комментариях)
Других решений пока нет …