2016-03-31 67 views
0

我在我的應用程序中有一個照片庫,與Facebook照片不太相似。我有兩個基本觀點:如何在活動之間傳遞大量數據?

  • PhotoGalleryActivity是按時間順序顯示的照片無盡的名單。攻入它會將您帶到詳細視圖。

  • PhotoDetailView基本上是一個查看傳呼機的照片和每張照片,它也顯示了上傳它的用戶。點擊該用戶,會轉到另一個PhotoGalleryActivity列出用戶上傳的所有照片。

要顯示PhotoDetailActivity,我需要通過從PhotoGalleryActivity到它的照片列表。照片對象基本上只是一個URL列表和一個用戶對象。

我研究了不同的可能解決方案,但沒有一個適合我的賬單。下面是我發現的人,爲什麼他們將無法正常工作(請糾正我,如果我錯了):

  • 意圖:這並沒有工作,因爲數據可以得到大(1MB是通過極限數據通過意圖)。我可能需要傳遞10,000張照片或100,000張照片。正因爲如此,在方位改變時我甚至無法保存它(我錯了嗎?)。

  • 辛格爾頓+標籤:由於用戶可以繼續點擊進入多PhotoGalleryActivity,我可以使用標籤,以便PhotoDetailActivity可以只通過使用PhotoGalleryActivity通過一個Intent標籤搶的照片列表。但是當應用程序被殺害時出現問題。單身人士失去了數據,所以我不能可靠地做到這一點。 (我覺得我可能會錯過這個用例的解決方法)。數據庫:我可以將它們保存在數據庫中,但這很難保持,因爲假設第一個PhotoGalleryActivity顯示來自所有用戶的照片。然後,我點擊一張照片,點擊上傳照片的用戶,然後開始瀏覽該用戶的照片。現在,當我回到第一個PhotoGalleryActivity時,數據庫中的最後一張照片現在是該用戶的最後一張照片,因此我的數據變得不合適。 (我可以考慮解決這個問題,但感覺它可能很快就會變得麻煩)。

我希望有人在這裏有一些經驗,並有一個解決方案的想法。

+0

我不明白爲什麼數據庫方法是一個問題。如果你擔心時間戳,你可以簡單地按一定的價值排序,以獲得訂單 –

+0

你是什麼意思? – Sree

+0

任何流行的數據庫有一些順序或排序功能...你是什麼意思的「按照時間順序最後一張照片在數據庫中,現在是該用戶的最後一張照片,所以我的數據變得污染」 –

回答

0

也許您可以使用服務,讓活動綁定相同的服務並將數據對象保存到服務中,然後活動可以按服務加載相同的數據對象。

我認爲服務沒有數據大小限制,比單例更可靠,比數據庫更靈活。

+0

你能否詳細說明一下? – Sree

+0

在互聯網上有很多教程你可以谷歌「Android活動bindService」,這裏有一些:[bind/unbind服務示例](http://stackoverflow.com/questions/8341667/bind-unbind-service-example- android),[在Android中綁定服務示例](http://www.truiton.com/2014/11/bound-service-example-android/)。 –

0

我認爲最好的方法是使用數據庫。它會保持數據,並且動作相對較快。您可以使用不同種類的ORM庫(例如Realm)來幫助您更輕鬆地連接到數據庫。比你能輕鬆查詢你需要在每個頁面上的任何數據(我假設你將使用一個視圖尋呼機的畫廊。

+0

這不是那麼簡單。如果只有一個畫廊,那很好。但考慮一下:啓動應用程序,打開顯示所有照片的主要圖庫,點擊照片進入詳細視圖,點擊打開另一個圖庫的用戶,用戶照片。現在,數據庫中的最後一張照片(通過時間戳)是我們在用戶的圖庫中時獲取的最後一張照片 – Sree

0

我建議你在你的應用程序文件夾與Uri的照片創建一個文本文件你想發送到下一個活動,然後在下一個活動中檢索它們。 如果將來您不希望用戶訪問文本文件,您可以使用自己的算法輕鬆對其進行加密,但它不會花費太多時間或精力來實施此解決方案。