安卓应用程序中如何保存数据

4

在Android中,有没有一种方法可以将对象保存到一个地方,以便同一应用程序的不同活动可以访问它们?而无需对对象进行序列化或打包?

5个回答

1
在活动之间传递对象的最佳方法是使用静态字段,可能是在扩展Application的类中,或者(可能更好)使用服务并让需要共享对象的活动绑定到它上面。
但是要注意在活动中使用静态字段,因为它们可以随时被销毁,因此不是线程安全的,有可能带来灾难性的后果。

0

SharedPreferences 是最好的选择。将其放置在活动中。

 public void saveSetting(String settingName, String value){
  SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
  Editor ed = pref.edit();
  ed.putString(settingName, value);  
  ed.commit();  
 }

我想传递我自己创建的对象。据我所见,SharedPreferences只能使用内置类型。 - Christian
将其序列化为字符串,可以使用JSONObject。 - Aliostad
Aliostad说得没错。勇敢地将你的对象序列化吧。不管怎样,你都必须这样做来保存你的数据。 - Edward Falk

0

你可以使用SharedPreferences或创建一个Singleton类。我使用单例模式来控制属性的生命周期。如果您想要保证持久性,请将数据存储在sqllite数据库中。

使用Singleton,您可以存储自定义对象。

public class MySingleton {
private static final AlphResourceSet INSTANCE = new MySingleton ();
private MySingleton() {}
public static MySingleton getInstance() {
    return INSTANCE;
}
   // all your getters/setters for your variables
}

0

SharedPreference 只适用于 SharedPreferences 支持的对象。对于任何长期存储对象,您都必须采取某种序列化路线。我猜您已经阅读了文档中的 数据存储页面。从那里开始,我建议您阅读有关 内部存储 的内容。如果您不想处理 Java 的可序列化接口,则建议您查看 XStream

XStream 与内部存储结合使用可能提供您所需的解决方案。


0

如果你正在寻找一个在不使用序列化、数据库等的情况下来维护全局应用状态的固定点,可以使用服务或者应用程序类。关于这个问题的一般提示可以在Android 开发者中找到。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接