Для целей бенчмаркинга я повторяю загрузку данных из актива и обработку его с помощью Superpowered SDK. Для открытия актива с помощью Superpowered SDK я создаю AssetFileDescripter afd
со стороны java и делаю вызов JNI с указанием пути к apk, afd.getStartOffset()
и afd.getLength()
в качестве параметров. В этой функции JNI я загружаю актив с помощью SuperpoweredDecoder и создаю новый файл (/storage/emulated/0/result.wav
) для сохранения результата.Очевидно, что создание файла происходит с ошибкой на Android на родной стороне, если существует множество объектов AssetFileDescriptors
Проблема в том, что при создании в каждом тесте итерации новый AssetFileDescripter
на стороне Java создает файл /storage/emulated/0/result.wav
с сверхмощные SDK терпит неудачу после 971 итераций, или большую часть времени 995 итераций.
Если я использую только один и тот же AssetFileDescripter
для всех итераций, все работает нормально, и я могу сделать 1000 или более эталонных итераций. Есть ли у кого-нибудь идеи? (Версия для Android моего тестирующего устройства - 4.4.2)
Я был бы благодарен за все намеки.
http://stackoverflow.com/questions/13262339/can-anyone-confirm-this-issue-limited-number-of-file-descriptors-on-some-androi кажется актуальным , –
Спасибо, ты вдохновил меня закрыть AssetFileDescriptor на каждой итерации. Я как-то забыл это сделать. – Sebastian