在应用程序对象遇到困难之后,我对使用GSON Libary和Sharedpreferences在活动之间交换数据有一个(新的?)想法。这具有很大的优势,即如果应用程序关闭,对象不会被销毁。使用GSON将对象存储到Sharedpreferences中。你怎么看?
我想知道你在
- 安全方面的想法
- 性能自动
- 应用稳定性
这是我做的。首先创建一个MyExchanger类
public class MyExchanger {
//store your variables here
String name;
List<Vokabel> vokabeliste;
//put your GETTERS und SETTERS HERE (or make them public)
}
然后一个辅助类,其中魔术发生
public class ExchangerUtils {
Context context;
SharedPreferences prefs;
SharedPreferences.Editor editor;
Resources res;
Gson gson;
Type type ;
public ExchangerUtils(Context context) {
this.context = context;
prefs = PreferenceManager.getDefaultSharedPreferences(context
.getApplicationContext());
res = context.getResources();
type = new TypeToken<MyExchanger>() {
}.getType();
}
public void updateExchanger(MyExchanger exchanger) {
gson = new Gson();
String exchangerjson = gson.toJson(exchanger, type);
editor = prefs.edit();
editor.putString(res.getString(R.string.key_exchanger), exchangerjson);
editor.commit();
}
public Exchanger getExchanger(){
String exchangerjson = prefs.getString(res.getString(R.string.key_exchanger), null);
Gson gson = new Gson();
if(exchangerjson!=null){
My Exchanger exchanger = gson.fromJson(exchangerjson, type);
return exchanger;
}
return new MyExchanger();
}
}
的实现看上去成才喜欢这个
//Somewhere in the activity
ExchangerUtils utils = new ExchangerUtils(this);
MyExchanger exchanger = utils.getExchanger();
exchanger.setName("a name");
utils.update(exchanger);
我已经在两个测试了我应用程序,它工作得很好,也适用于旧手机和许多对象(> 100)。
实现中唯一的安永事情是我必须更新对象。任何想法如何使用这种方法做到这一点?
我对改进有任何建议,随时发布。
最后一句似乎是有道理的,唯一的问题是,为什么我不应该用它替代它,如果它更容易? – w4beda 2013-04-06 11:05:23