我想爲大文件(大約60MB或更多)計算md5散列。該設備,1GB RAM和16GB的Nexus 7無法分配超過30MB的內容。代碼失敗,java.lang.OutOfMemory異常。將大量數據傳遞給Titanium.Utils.md5HexDigest
而且我沒有找到任何方法將數據以零碎的方式添加到Titanium.Utils.md5HexDigest()。它需要一次完整的數據。
有什麼辦法可以解決這個問題嗎?
我搜索了任何能夠幫助我在市場上做到這一點的產品。但我還沒有找到。
我想爲大文件(大約60MB或更多)計算md5散列。該設備,1GB RAM和16GB的Nexus 7無法分配超過30MB的內容。代碼失敗,java.lang.OutOfMemory異常。將大量數據傳遞給Titanium.Utils.md5HexDigest
而且我沒有找到任何方法將數據以零碎的方式添加到Titanium.Utils.md5HexDigest()。它需要一次完整的數據。
有什麼辦法可以解決這個問題嗎?
我搜索了任何能夠幫助我在市場上做到這一點的產品。但我還沒有找到。
你提到它是確定是否要再次下載它。所以,它來自某個地方的服務器。
而不是重新計算MD5
,您應該已經在下載文件時將它存儲在應用程序中。所以只需比較存儲的MD5 Hash
與服務器上的那個。這爲您節省了很多麻煩,實際上並不需要您重新計算。它也極大地加速了應用程序。
可以說我的連接由於某種原因中止了,或者我在崩潰後重新啓動,並且我不知道文件是否已經完全下載。所以首先我檢查文件大小。如果它少了,我繼續下載剩餘的字節並追加到文件中。如果它是相同的大小,那麼我需要計算MD5哈希,然後將其與服務器上的哈希進行比較。 – sky
是設備上的實際文件嗎?你想這麼做的原因是什麼? (爲什麼我問:這似乎不是手機應該做的操作) –
@RenePot是文件在設備上。我需要檢查文件的md5以確定我是否應該再次下載它。不是真的在電話上..我們正在爲運行android 4.2.2的minix box構建數字標牌應用程序。但我對Nexus 7進行了測試。 – sky