如何在android ?,购物车之类的活动之间存储数据

时间:2012-04-12 20:02:09

标签: android

我想在某些活动之间提供一些数据,就像网站上的购物车一样。

这些数据可能是字符串的集合,可能是列表,地图或类似的东西。每个项目都应该关联一个id,数量,类型和文本注释(关于最后一个还不确定)

关键是会话结束后不需要持久化,这个数据将在整个会话中被删除并重新创建多次。

问题是: 是使用SharedPreferences的最佳选择吗?数据库?

谢谢!

7 个答案:

答案 0 :(得分:3)

更好的选择是通过工厂对象定位的一些单件java集合(地图或列表)。只需将您的购物车存放在那里,而不必担心数据库或偏好

如果你决定使用偏好,我可以推荐我的小数据库:

https://github.com/ko5tik/andject

答案 1 :(得分:1)

最简单的方法是使用一个声明了公共静态变量的类,并且jus从任何活动设置它们,并通过调用静态引用来检索保存在任何其他活动中的值,即MyContantsClass.StaticVar1 like

class MySessionVars
 {
      public static int MyVar1;
 }

在第一个活动中

{
   MySessionVars.NyVar1=10;
}

以及任何其他活动

{
    Var = MySessionVars.NyVar1;
}

这是最简单的方法,将保留变量,直到应用程序关闭

答案 2 :(得分:1)

您可以使用Gson(由Google)发送和接收任何数据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);
    }
    //...
}

答案 3 :(得分:0)

Use Bundle或意图。

我不建议为此目的使用数据库。需要正确打开和关闭数据库。在围绕活动传递数据的地方,可能会弄乱哪些活动应该是关闭数据库的最后一个,并且可能导致泄漏。如果您只是将这些数据从一个Activity传递到另一个Activity,请创建一个Bundle,在开始下一个活动时将其附加到Intent。

答案 4 :(得分:0)

SharedPreferences非常适合存储简单的键/值对和少量数据,但是,我想你的购物车对象可能比这更复杂一些。出于这个原因,我可能会使用SQLite数据库。如果你没有复杂的数据,你只想存储一些简单的东西,那么共享偏好应该这样做。

答案 5 :(得分:0)

SharedPreferences是键值对,而Android中的数据库是SQLite,它们在会话后都会持续存在。您可以在SQLite数据库上执行任意数量的操作,并在下一个会话期间使用相同的文件。 如果您需要对特定用例进行更多说明,可以对我的答案提出意见。

答案 6 :(得分:0)

人们可能会谈论制作全局数据或在共享偏好中存储值,但根据我的经验,最简单的方法是创建一个单独的类,将变量或arraylists声明为public static,然后通过引用在整个项目中使用它们classname.variable名称。 class global

{
   public static arrayList<String> my;
}

在您的任何活动中 global.my

这是我到目前为止找到的最简单的方法!