在android中是否有某种方法可以将对象保存到可以通过同一应用程序的不同活动访问它们的位置?无需序列化或包裹对象?
答案 0 :(得分:1)
在活动之间传递对象的两种最佳方法是在扩展Application
的类中使用静态字段,或者(可能最好)使用服务并让需要共享对象的活动绑定到它。
请谨慎使用Activities
中的静态字段,因为它们可以随时销毁,因此不是线程安全的,可能是灾难性的。
答案 1 :(得分:0)
SharedPreferences
是要走的路。把它放在活动
public void saveSetting(String settingName, String value){
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(this);
Editor ed = pref.edit();
ed.putString(settingName, value);
ed.commit();
}
答案 2 :(得分:0)
SharedPreference仅适用于SharedPreferences支持的对象。对于任何长期存储的对象,您必须沿着某种类型的序列化路径前进。我猜你已经读过Data Storage page in the docs了。从那里我建议你阅读Internal Storage。如果您不想处理Java的可序列化界面,那么我建议您查看XStream。
XStream与内部存储相结合可提供您所需的解决方案。
答案 3 :(得分:0)
如果您正在寻找维持全局应用程序状态而不使用序列化,数据库等的永久性点,请使用Service或Application类。有关此问题的一般提示,请参阅android developers。
答案 4 :(得分:0)
您可以使用SharedPreferences或创建Singleton类。我使用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
}