2016-07-16 113 views
0

我目前正在使用Fragments,我的一個片段是「用戶配置文件」,其中登錄的用戶可以編輯和查看他們自己的配置文件。這個大學項目的一個要求是用戶需要能夠上傳個人資料圖片,並將其分配給他們的用戶個人資料並保存在服務器上(我目前在Linux上使用Lampp)。我有以下問題:下載並存儲圖像

  1. 當用戶上傳使用凌空庫(安卓)的圖像它首先需要將圖像保存到MySQL數據庫的相對/絕對路徑,然後利用這些信息將JSON格式的圖像放回到設備上,並將其緩存到哪裏?

  2. 我在線閱讀了Volley圖書館可以緩存設備上的圖像和視頻,這將有助於數據消費,因此用戶無需每次重新登錄都需要下載圖像。但是,如果用戶從IOS設備登錄到應用程序並在那裏上傳圖像,然後又回到Android設備並登錄 - 那麼該應用程序需要更新其用戶配置文件。

我的想法是每一個新的圖像上傳到其上傳的時間將被添加到一個數據庫中的日期/時間插槽中的服務器的時候,那麼這個時候存儲的是SQLite的數據庫和MySQL數據庫,每次他們打開應用程序,它向MySQL數據庫請求這個時間字段的請求,如果沒有添加圖像,那麼SQLite時間和剛纔從MySQL數據庫中提取的時間是相同的,所以不需要下載任何圖像 - 我認爲這將是一種簡單的檢查方式,而不需要使用大量數據?或者有人可以提出更好的選擇。

但是,我的上述建議的問題是說,例如有5個圖像緩存在設備上,但第六個圖像是從另一個設備添加的,當我們回到原始設備時,我們如何才能下載新的圖片?而不是所有其他5個已經在緩存中的5個?

+0

這是對你想要做什麼的描述的一大堆,並沒有暗示什麼是實際的具體問題。 – tadman

回答

1
  1. 我認爲你需要存儲在數據庫沒有路徑圖像文件,但你傳遞到Volley的URI。然後,當您想在Volley中顯示圖像傳遞保存的URI時,它將決定顯示緩存的圖像或從互聯網上傳。

  2. 好想法。我認爲在你的情況下,你可以只顯示緩存在dp中的數據,然後額外從服務器獲取數據,並將其更改爲緩存並顯示新結果。此外,您可以實現長輪詢,套接字或GCM來設置與服務器的連接並立即獲取新的更新數據(實際情況下不是立即更快,而是「更快地轉到應用程序 - 如果服務器端發生更改, )。

,當然還有,請看看到firebase教程想想在你的服務器端實現這件事情,並提供與本地緩存數據的即時更新更有趣,更covenient連接。 additional link to video tutroial

+0

我有一些問題: 1.所以你會建議將實際的圖像存儲在MySQL數據庫?出於某種原因,我們總是被告知大學不要這樣做。 2.我不完全理解你的意思是2.你的意思是「show data cache in dp」,你的意思是從緩存中顯示圖像,並從服務器獲取?如果你的意思是這不會重新加載所有的圖像?這將使用大量的數據。而對於「實現長時間輪詢,或套接字,或GCM」,我會只使用firebase?謝謝 – AmberHelpSK

+0

1.我建議存儲在db不是圖像,而是圖像的URI。例如,它是您傳入Volley的URL。 –

+0

2.我的意思是說您已經在dp中緩存了圖像的URI,或者緩存了用戶配置文件的信息。沒關係。然後你從數據庫中獲取這些數據。在圖像的情況下,您從數據庫中獲取圖像的URI。然後在排球的幫助下展示它。然後向服務器請求獲取新信息。然後,如果它更改緩存這個信息在DB和顯示更新的信息。 –