爲了進行基準測試,我重複從資產加載數據並使用Superpowered SDK處理數據。對於使用Superpowered SDK打開資產,我在java端創建一個AssetFileDescripter afd
,並以apk的路徑afd.getStartOffset()
和afd.getLength()
作爲參數進行JNI調用。在這個JNI函數中,我使用SuperpoweredDecoder加載資源並創建一個新文件(/storage/emulated/0/result.wav
)來保存結果。如果已經有很多AssetFileDescriptors存在,則顯然在Android上創建文件失敗
問題是,當我在java端的每個基準迭代中創建新的AssetFileDescripter
創建文件/storage/emulated/0/result.wav
並且SuperPowered 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