2015-07-28 51 views
-1

我有2個數據類來存儲一些值。第一類(Custom1)有一個類型爲Custom2的變量。單身或靜態類

我想通過不同的活動來填充變量並將信息存儲到sql-Database中。

Main - > Activity1(Var1填充) - > Activity2(Var 2填充) - > Activity3(填充Var 4) - > SQL。

要填充Var3(類型Custom2),我想實現一項服務,因爲數據是從Internet獲取的。 (在Activity 1中調用 - >在用戶填充活動2中的數據時獲取數據的時間 - >在Activity3的末尾存儲在SQL中的數據)

現在我考慮實現一個將所有數據寫入3個活動和服務)以及哪些值最後存儲在SQL中。這是做這件事的最好方法嗎?

或者我應該只是在Main.onCreate()創建一個靜態Custom1?我試圖研究哪種方式最好,但我不確定。由於Custom2類共有約22個變量,因此我想避免將Custom1類粘貼到Singleton類。

通過活動傳遞Custom1的實例聽起來不是一個好主意,因爲我需要訪問服務中的數據。

有人提示?我知道這幾乎是一個常被問到的問題,但有利於回答「這取決於」我只是試圖讓我的需求明確。

謝謝!

public class Custom1{ 
private String Var1; 
private Int Var2; 
private Custom2 Var3; 
private String var4; 

public void Custom1(){ } 

//getter & setter 
} 

public class Custom2{ 
private double Var5; 

public void Custom2(){} 

//getter & setter 
} 
+0

學習觀察者和可觀察的實現 – Sheychan

+0

這可能不會回答你的問題,但你有沒有考慮使用'SharedPreferences'? – dotvav

+0

還沒有。這用作緩存,因此我沒有考慮共享首選項,但它可能是一個選項。我會試一試 - 在SharedPreferences而不是對象中存儲和檢索數據時是否有任何性能問題? 謝謝Sheychan,我很久以前聽說過觀察員,我確定看看他們。 –

回答

0

以單例存儲數據是此方案的最佳方法。 SharedPreferences存儲在磁盤上,因此不必要的開銷。一旦你到達最後的活動,你可以通過檢查服務可以設置的一些標誌來檢查singleton是否完成加載。如果是,那麼寫入SQL,否則創建一個廣播偵聽器,它將監聽完成任務的服務,然後寫入SQL。

+0

好的,聽起來不錯。創建單例 - 我可以以某種方式引用自定義類(例如擴展或事端),還是僅僅複製並粘貼變量定義和getter/setter方法(以及創建像private構造函數等其他方法)? –

+0

您可以使用自定義類本身,無需擴展任何內容。 Singleton可以是任何類,它的形成方式只能通過將構造函數設置爲私有並多次使用該實例來創建實例。 – Shakti

+0

對,但我也想使用這個類,當我從SQL(Class =日記條目; SQL =許多日記條目)檢索數據 - 並且因爲我想存儲不同的條目到ArrayList ,我還需要一個非 - 班級的單人副本,還是我錯了? –