2013-06-25 35 views
0

我的應用程序需要從服務器下載許多圖像(每張圖像大約10kb)。我只是簡單地下載了它們中的每一個,並且沒有任何優化,而是使用獨立的AsyncTask在發送到移動設備之前壓縮圖像的常見做法?

現在我想知道傳輸這些圖像的常見做法是什麼。例如,我正考慮在服務器上保存壓縮圖像,然後發送用戶手機的壓縮文件進行解壓縮。在這種情況下,將zip文件合併爲一個大的zip文件供用戶下載會更好嗎?

還是有更好的解決方案?提前致謝!

編輯:

似乎結合zip文件是一個好主意,但我覺得它可能要花很長時間了用戶等待下載並解壓縮的所有圖像。因此,我可能會在每個zip文件中放入十或二十張圖像,以便用戶在等待更多內容時可以看到一些下載的圖像。有多個AsyncTask一起射擊可以更快嗎?但即使給予相同的文件大小和相同的地址下載,它們也不會同時完成?

回答

1

由於延遲通常是移動連接的最大問題,因此減少必須打開的連接數是優化加載時間的好方法。發送帶有所有圖像的zip文件聽起來像是一個非常好的主意,並且可能值得實施。

0

圖像可能已經被壓縮(gif,jpg,png)。您不會減少文件大小,但會減少連接數量。這對於移動設備來說是個好主意。如果它總是相同的一組圖像,你可以使用一些精靈技術(發送一個包含所有圖像但具有不同x/y偏移量的較大圖像文件,在html中,您可以使用具有偏移量的背景來顯示正確的圖像)。

+0

謝謝!但恐怕圖像會一直被用戶上傳或修改.. – Arch1tect

0

我在看邊欄,看到this的話題,但是當我看到評論時,你正在詢問補丁。

確保用戶知道如何處理它的最佳方式是確保用戶知道該如何處理。您希望用戶下載X文件並將Y輸出用於不同目的。另一方面,似乎通常的做法是,那些不是Android應用程序原生的資源的大塊資源並不能適應APK。

一個可比較的例子是JDIC應用程序,它使用流行的日語資源,並列用於英文翻譯。像WWWJDIC這樣的JDIC應用程序使用在線下載來獲取Google服務器上的延遲時間很長的參考文件(以前曾提到過)。在Google應用上使用大於200 MB的代碼也是不好的代表,除非它是3D,這是合理的。如果您的圖片無法在應用程序本身沒有很長的加載時間的情況下進行壓縮,您可能需要考慮此選項。唯一的缺點是要求在線連接(前面也提到過)。

此外,你可以使用7zip和程序Android自我提取到一個位置。 http://www.wikihow.com/Use-7Zip-to-Create-Self-Extracting-excutables

另一方面,用戶在初次啓動時進行一次性下載時,應用程序將進行例行檢查是最佳選擇。然後,您可以選擇輸入AsyncTask,以便將文件下載到應用程序並在重新啓動後使用或無論您需要,所以您確實只需要一個AsyncTask。這樣做的好處是用戶在應用上同步,他可能只需要檢查一次。缺點是用戶可能並不總是能夠更新並且可能需要使用4G或LTE,但是如果他可以隨時使用WiFi,這是一個小問題。