2015-07-20 13 views
0

我使用MPAndroidChart庫創建的圖表使用來自Web服務的數據,這需要一點時間。因此,在這個時候我希望顯示一個Splashscreen,這樣網絡調用可以在後臺進行,一個圖表將會形成,然後傳遞給它要顯示的MainActivity。 爲此我希望將兩個BarChart和一個Radplasthart對象從Splachscreen活動傳遞給MainActivity。如何將MPAndroidChart中的圖表從一個活動傳遞到另一個活動?

那麼我該如何做到這一點?

回答

1

傳遞數據而不是圖形。你也可以傳遞數據,因此:

Intent i = new Intent(getApplicationContext(), NewActivity.class); 
i.putExtra("new_variable_name","value"); 
startActivity(i); 

,並得到它,它新的活動是這樣的:

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    String value = extras.getString("new_variable_name"); 
} 

您可能需要通過數據parcelable或序列化取決於你有什麼樣的數據。

然後,您可以使用傳遞的數據在新活動上繪製圖表。

1

在我看來,你的整體設計方法需要一點改進。

首先,我建議您避免使用splash活動來「包含」網絡操作。從用戶體驗角度來看,這可能很糟糕,因爲從一次使用到下一次使用,啓動屏幕可能會處於不確定的時間。如果啓動屏幕停留時間超過了兩秒鐘,則應用程序可能看起來沒有響應。如果你堅持這樣做,我建議啓動畫面至少包含動態狀態信息,以通知用戶發生了什麼。

接下來,請務必在主UI線程上的專用線程而不是上執行您的聯網操作。

對於MainActivity引用提取的數據,我建議你看看單例模式,以保存在內存中。也就是說,要麼使用專用的單例對象,要麼將其保存在Application的子類中。這樣,網絡操作將設置該單身人士的數據,並且MainActivity從單身人士處獲得該數據。或者,當您爲MainActivity創建Intent時,Bundle可能包含一個字符串,該字符串可用作獲取數據的關鍵字。我提出這個策略的原因是因爲我認爲可能涉及大量數據。另一方面,如果數據量非常小,也許你可能會將數據本身放入Bundle,或許可以作爲String中的JSON或其他東西。

請記住,如果應用程序轉到後臺並稍後恢復,則可能會遇到活動堆棧恢復的情況,但是應用程序的所有「全局」狀態均已消失。這意味着您的MainActivity將會恢復,但您希望在單身人員課程中的數據不再存在。您的MainActivity應該有辦法解決這個問題,也許通過發起一個新的網絡請求。

相關問題