2015-10-19 49 views
0

我有一個MainActivity,它使用Retrofit從Web服務器獲取大量的數據。這些數據顯示在回收站視圖中。如何在活動間共享大量數據?

現在,我想有另一個工作在完全相同的數據集上的活動。什麼是最有效的方式來做到這一點?早些時候我使用靜態的Controller來完成這項工作,它可以跟蹤數據,但我一直聽到很多關於靜態容器的批評。傳遞意圖中的數據並不是最優的,因爲數據相當複雜,並且有很多。

理想情況下,我希望能夠修改任一活動中的數據集,以便將更改反映到其他活動中。

+0

你不覺得用這個數據庫會更好嗎?快速的東西,如SnappyDB。否則,你可能會使用靜態變量,但那些是不好的。通過序列化或Parceable可以輕鬆地傳遞列表,但這些可能會成爲大型數據集的負擔 – Smashing

+0

@Smashing數據不應該是持久性的 - 它只存在於應用程序的整個生命週期中。數據已經在內存中,所以最快的方法應該是將它傳遞給第二個活動。 – manabreak

+0

將數據作爲'ArrayList <>'傳遞給另一個活動,並使用'getIntent()。getSerializableExtra'使用類型轉換根據ArrayList <>'傳遞 –

回答

2

我想你應該考慮2個選項(取決於你想與大家分享的數據量,以及您的應用程序是假設上運行的設備的類型)

  1. 您可以擴展應用程序類在您的活動之間包含全球數據。您可以在這裏閱讀更多信息:http://www.helloandroid.com/tutorials/maintaining-global-application-state

  2. 您可以使用持久性存儲(即sqlite/file)。

每種方法都存在權衡。哪一個最適合你,取決於你的具體設置。