ベンチマークの目的で、資産からデータを読み込み、Superpowered SDKで処理します。 Superpowered SDKを使用してアセットを開くには、Java側にAssetFileDescripter afd
を作成し、apkへのパスであるafd.getStartOffset()
とafd.getLength()
をパラメータとしてJNI呼び出しを行います。このJNI関数では、SuperpoweredDecoderでアセットをロードし、結果を保存するための新しいファイル(/storage/emulated/0/result.wav
)を作成します。既にたくさんのAssetFileDescriptorsが存在する場合は、ネイティブ側のファイルでファイルが作成されないようです。
問題は、私はSuperpowered SDKを使用してファイル/storage/emulated/0/result.wav
971回の繰り返しの後に失敗した、または、ほとんどの時間995回の反復を作成するJava側の各ベンチマーク反復で新しいAssetFileDescripter
を作成するときにということです。
すべての繰り返しに対して1つの同じAssetFileDescripter
を使用すると、すべて正常に動作し、1000回以上のベンチマーク反復を行うことができます。 誰にもアイデアはありますか? (私のテストデバイスのアンドロイド版は4.4.2です)
すべてのヒントに感謝します。
http://stackoverflow.com/questions/13262339/can-anyone-confirm-this-issues-limited-number-of-file-descriptors-on-some-androi relevantと思われます。 –
ありがとうございました。それぞれの反復でAssetFileDescriptorを閉じるように促しました。私は何とかこれを忘れてしまった。 – Sebastian