2012-04-09 44 views
1

我需要保持對不同活動之間的對象的引用。這兩個提及似乎創造了從活動到活動的新對象。這是一個問題,因爲一旦父活動獲得焦點,對「子」活動中對象的更改就不會持續。我對此的解決方案只是在子活動調用和使用的父最活動中創建一個靜態getter。這是不正確的方式去做這件事?使用靜態而不是parcelable/serialize - 這是不好的?

回答

2

如果要在活動之間共享對象的單個實例,可以創建單例類。使用父類最活動類來實現單例唯一的錯誤可能是它可能違反了single responsibility principle

0

您可以通過在您的Application派生類中將其設置爲字段來使對象在整個應用程序生命週期中保持持久性。

public class MyAppication extends Application { 

private Object mMyData; 

public setData(Object data) { 
    mMyData = data; 
} 

public Object getData() { 
     return mMyData; 
} 

}

然後((MyApplication)getAppllication()).setDatagetData()

這樣你可以因爲MyApplication會一直存在的應用程序中進行數據交換。

您還可以添加MyApplcation體現

0

您應該創建一個單身,這有每當你跟這一個實例。 (就像你的描述)。

這裏有一個我早些時候:https://stackoverflow.com/a/6539080/413127

+1

爲什麼你有一個靜態引用的上下文。我可以將一個活動傳遞給你的單身人士,然後改變方向,活動會被破壞,但你的上下文領域將它保存在那裏。此外,人們可以使用不再有效的上下文 – 2012-04-09 16:36:46

+0

這是一個私人蔘考。這個類是一個具有一個全局上下文的單例,如果這成爲一個問題,這取決於你在類中使用上下文。 – Blundell 2012-04-09 16:41:24

+0

對單身人士的引用會隨着活動而被摧毀。下一次你要求單身你不得不更新上下文。啊,所以這不是100%的單身我明白你的意思。 – Blundell 2012-04-09 16:42:19

相關問題