2017-02-19 71 views
0

爲了進行基準測試,我重複從資產加載數據並使用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)

我會感謝所有的提示。

+1

http://stackoverflow.com/questions/13262339/can-anyone-confirm-this-issue-limited-number-of-file-descriptors-on-some-androi似乎相關。 –

+0

謝謝,您激勵我在每次迭代中關閉AssetFileDescriptor。我有點忘了這樣做。 – Sebastian

回答

1

每次迭代後關閉資產文件描述符解決了我的問題。對於打開的文件描述符,似乎確實存在一個與設備有關的限制。 (按照鏈接到問題的意見)

相關問題