SharedPreferences或数据库?

时间:2012-02-08 19:14:32

标签: android database sharedpreferences

我的应用程序中有两个活动说A& B.活动A需要B存储的数据(当前共享首选项)。但是要查询活动A中的数据,我需要B的上下文。但是,活动A没有任何方法来获取活动B的上下文(根据应用程序流程)。有没有办法或使用数据库将是一个更好的选择??

4 个答案:

答案 0 :(得分:5)

如果您要存储在SharedPreferences中,那么您不需要活动B的上下文。活动A的上下文可以访问应用程序的SharedPreferences,因为它们是应用程序的“全局”。

代码示例

ActivityA.this.getSharedPreferences("SOMETHING", MODE_PRIVATE);

至于定义是否需要数据库,您没有说明您存储的数据是什么。因此无法分辨。

答案 1 :(得分:4)

为什么需要活动A的上下文?您可以在每个活动中使用getApplicationContext().getSharedPreferences()来存储/检索SharedPreferences。

此外,根据您存储的数据,您可能希望使用Intent将数据从活动A传递到活动B.例如,要从A启动活动B,您将使用以下内容:< / p>

Intent i = new Intent(getApplicationContext(), ActivityB.class);
i.putExtra("someIntData",1234);
i.putExtra("someStringData","yourdata");
startActivity(i);

然后,无论您需要ActivityB中的数据,您都可以:

int yourIntData = getIntent().getIntExtra("someIntData",0);
String yourStringData = getIntent().getStringExtra("someStringData");

这会更快,因为您不必使用SharedPreferences或数据库来访问文件系统。

答案 2 :(得分:2)

您可以使用

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);

使用任一活动,它会返回与您应用的包名绑定的SharedPreferences对象,无论您将哪个活动作为上下文传递。

或者,您可以为共享偏好设定一个名称,并将其传递给活动的getSharedPreferences方法(正如Sam_D和Graham在答案中指出的那样)。

答案 3 :(得分:1)

您可以将所有数据存储在SharedPreferences中,并且可以从应用程序中的每个活动访问它们。

就像它在这里解释的那样: http://developer.android.com/guide/topics/data/data-storage.html#pref