2014-06-13 21 views
2

我有一個Android應用程序需要上傳,相對頻繁地下載10-12MB之間的數據文件。鑑於我的應用程序是比較流行的像印度這樣的國家可能不具有良好的互聯網連接,我在下面的約束從Android應用上傳大數據到服務器的最佳方式是什麼?

  • 用戶可能無法連接到互聯網全天候
  • 用戶的交互並不取決於是否下載工作/上傳成功。

這是一款詩歌應用程序,我們可以在用戶手機上下載新詩並在用戶連接到互聯網時將用戶的詩歌上傳到我們的服務器。

我知道使用「com.loopj.android.http.AsyncHttpClient;」爲溝通,但我想知道是否有更好的選擇,可以做到以下幾點:

  • 我應該開始一個服務,提供上傳/下載接口?
  • 即使用戶不使用應用程序,是否可以在後臺執行此操作?
+0

相對經常10-12 MB?您是否告訴我,您希望每個用戶在每次更新數據庫時都重新下載整個詩歌數據庫?你不應該只是讓用戶下載更新數據(而不是每次都是整個數據庫)嗎? –

+0

爲什麼你會有相同的上傳要求?每個用戶會一次上傳幾千首詩嗎?我對此表示懷疑。即使有些人做了,當他們需要做大量的上傳時,他們可能更願意使用實際的PC。 –

+1

人們不會理解爲什麼它是10-12 MB,或者它是否是好事。讓我們堅持所問的問題。 –

回答

2

是的,你應該使用服務,特別是foreground service(顯示上傳過程中的通知)。此外,前臺服務not likely to be killed by Android

...系統認爲它是一些用戶正在積極瞭解 ,因而不是候選人進行查殺時內存不足。

對於下載,Android提供稱爲DownloadManager一個現成的解決方案。它已經包含了在連接丟失的情況下恢復下載的能力。

對於上傳,沒有相應的(至少據我所知)。你將不得不推出你自己的解決方案,可能涉及到Content-Range HTTP頭。這取決於您的服務器,例如Google Drive有一個API for this。也看看Resume file upload/download after lost connection (Socket programming)(雖然它與套接字,概念是或多或少相同)。

另一種選擇是對此任務使用SyncAdapter。見Transferring Data using Sync Adapters。我不確定這是否支持恢復。

相關問題