我想在一些活動之間提供一些數據,就像網站上的購物車一樣。如何在Android中的活動之間存儲數據?,購物車如
這些數據可能是字符串的集合,也許是列表,地圖或類似的東西。每個項目應該有一個ID,數量,類型和文本註釋(關於最後一個不確定)關聯
重點是它不需要在會話結束後持久化,並且此數據將在整個會話中被完全刪除並重新創建多次。
問題是: 是使用SharedPreferences?數據庫的最佳選擇?
謝謝!
我想在一些活動之間提供一些數據,就像網站上的購物車一樣。如何在Android中的活動之間存儲數據?,購物車如
這些數據可能是字符串的集合,也許是列表,地圖或類似的東西。每個項目應該有一個ID,數量,類型和文本註釋(關於最後一個不確定)關聯
重點是它不需要在會話結束後持久化,並且此數據將在整個會話中被完全刪除並重新創建多次。
問題是: 是使用SharedPreferences?數據庫的最佳選擇?
謝謝!
更好的選擇是通過工廠對象定位的一些單例Java集合(地圖或列表)。只是存儲您的購物車有與數據庫或偏好在所有
不打擾你決定使用偏好的情況下,我可以我的電子書籍的小數據綁定庫:
Use Bundle或意圖。
我不會推薦使用數據庫來達到這個目的。數據庫需要正確打開和關閉。在活動中傳遞數據的地方,哪個活動應該是關閉數據庫的最後一個活動,並且可能導致泄漏。如果您只是將這些數據從一個活動傳遞到另一個活動,請創建一個Bundle,並在開始下一個活動時將其附加到Intent。
SharedPreferences適用於存儲簡單的鍵/值對和少量數據,但是,我想你的購物車對象可能比這更復雜一點。出於這個原因,我可能會使用SQLite數據庫。如果你沒有複雜的數據,而你只想存儲一些簡單的東西,那麼Shared Preferences應該可以。
是的,我應該丟棄共享首選項 – giorgiline 2012-04-12 20:41:24
SharedPreferences是鍵值對,而Android中的數據庫是SQLite,它們在會話之後都會持續存在。您可以對SQLite數據庫執行任意數量的操作,並在下一次會話期間使用相同的文件。 如果您需要針對您的特定使用案例進行更多說明,您可以提出意見。
最簡單的方法是使用聲明瞭公共靜態變量的類,並從任何活動中將它們設置爲它們,並通過靜態引用(即MyContantsClass)調用將該值保存在任何其他活動中。StaticVar1像
class MySessionVars
{
public static int MyVar1;
}
在第一項活動
{
MySessionVars.NyVar1=10;
}
,並從任何其他活動
{
Var = MySessionVars.NyVar1;
}
這是最簡單的方法,並保留瓦爾直到應用程序被關閉
人可能說話關於使用全局數據或將值存儲在sharedpreference中,但根據我的經驗,免費的方法是創建一個單獨的類,並將變量或數組列表聲明爲public static,然後通過引用classname.variable名稱在整個項目中使用它們。 class global
{
public static arrayList<String> my;
}
您的任何活動
global.my
這是最簡單的方法,我發現至今!
您可以使用Gson(由谷歌)發送和接收任何數據btw活動,甚至類對象。
發送:(FirstActivity)
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
Gson gson = new Gson();
intent.putExtra("CustomClassObject", gson.toJson(object));
startActivity(intent);
接收:(SecondActivity)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Bundle extras = getIntent().getExtras();
if (extras != null)
{
Gson gson = new Gson();
CustomClass object = gson.fromJson(extras.getString("CustomClassObject"), CustomClass.class);
}
//...
}
通常這是解決方案,我一起去除了存儲任何我想確保數據庫或共享偏好的數據。 – 2012-04-12 20:18:35
您的意思是創建一個具有自定義對象集合的類? – giorgiline 2012-04-12 20:38:06
你可以做到這一點,或者你可以讓你的集合存儲在應用程序對象(http://developer.android.com/reference/android/app/Application.html) – 2012-04-12 20:52:13