我正在下載應用程序並同時運行多個線程以便下載更快。但我面臨的問題與Android 4.1果凍豆它產生了太多的文件的例外是打開(打開失敗:EMFILE(太多打開的文件))。據我所知,可能只有1024個文件應該爲一個進程打開。但問題只發生在果凍豆而不發生在ICS上。果凍豆(Android 4.1)發生錯誤 - >打開失敗:EMFILE(太多打開的文件)
有沒有人可以請幫忙解決這些問題。由於批量文件的影響,下載超過10個線程的文件非常重要。
請提出任何想法。在程序上解決。
我正在下載應用程序並同時運行多個線程以便下載更快。但我面臨的問題與Android 4.1果凍豆它產生了太多的文件的例外是打開(打開失敗:EMFILE(太多打開的文件))。據我所知,可能只有1024個文件應該爲一個進程打開。但問題只發生在果凍豆而不發生在ICS上。果凍豆(Android 4.1)發生錯誤 - >打開失敗:EMFILE(太多打開的文件)
有沒有人可以請幫忙解決這些問題。由於批量文件的影響,下載超過10個線程的文件非常重要。
請提出任何想法。在程序上解決。
對於Linux操作系統上每個進程打開文件的數量存在嚴格的限制。如果您具有系統級訪問權限,則該數字是可配置的,但不能通過Android進行配置。除了編寫應用程序之外,沒有什麼可以做的,所以更少的文件一次打開。
儘管現實上,如果你遇到這個問題,你可能會泄漏文件句柄。確保關閉所有打開的文件 - 打開文件的限制是同時進行的,如果關閉了一個文件,您可以隨時打開一個新文件來取代它。
幾周前,我在Jellybean中遇到了同樣的問題,最後找到了解決方法。請參閱https://stackoverflow.com/a/20417556/976367
也許httpClient「有更多的錯誤」並且已被棄用,但JellyBean的這個問題是一個難題。我正在使用Ksoap2,所以我嘗試了所有可能的建議答案。
沒有任何工作 - 我的解決方案是回滾我使用從3.1.1到2.6.5版本的Ksoap2。使用2.6.5的問題大大減少了。仍在測試,但可能甚至解決。
這可能是KSoap2的舊版本爲我工作的原因是它使用httpClient而不是httpUrlConnection。
http://illegalargumentexception.blogspot.de/2008/10/java-how-not-to-make-mess-of-stream.html是關閉'OutputStream'的可靠方法的一個很好的資源。你的問題可能與某些方面有關,而不是關閉東西 – zapl
你能找到解決方案嗎?我遇到與Jellybean相同的問題。事實上,所有版本的Jellybean(4.1至4.3)。薑餅,ICS和奇巧不存在這個問題。 –