2013-06-21 36 views
0

我想爲大文件(大約60MB或更多)計算md5散列。該設備,1GB RAM和16GB的Nexus 7無法分配超過30MB的內容。代碼失敗,java.lang.OutOfMemory異常。將大量數據傳遞給Titanium.Utils.md5HexDigest

而且我沒有找到任何方法將數據以零碎的方式添加到Titanium.Utils.md5HexDigest()。它需要一次完整的數據。

有什麼辦法可以解決這個問題嗎?

我搜索了任何能夠幫助我在市場上做到這一點的產品。但我還沒有找到。

+0

是設備上的實際文件嗎?你想這麼做的原因是什麼? (爲什麼我問:這似乎不是手機應該做的操作) –

+0

@RenePot是文件在設備上。我需要檢查文件的md5以確定我是否應該再次下載它。不是真的在電話上..我們正在爲運行android 4.2.2的minix box構建數字標牌應用程序。但我對Nexus 7進行了測試。 – sky

回答

0

你提到它是確定是否要再次下載它。所以,它來自某個地方的服務器。

而不是重新計算MD5,您應該已經在下載文件時將它存儲在應用程序中。所以只需比較存儲的MD5 Hash與服務器上的那個。這爲您節省了很多麻煩,實際上並不需要您重新計算。它也極大地加速了應用程序。

+0

可以說我的連接由於某種原因中止了,或者我在崩潰後重新啓動,並且我不知道文件是否已經完全下載。所以首先我檢查文件大小。如果它少了,我繼續下載剩餘的字節並追加到文件中。如果它是相同的大小,那麼我需要計算MD5哈希,然後將其與服務器上的哈希進行比較。 – sky