在使用应用程序对象遇到困难之后,我有了一个(新的?)想法,即使用 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)。
实现中唯一的 annyong 是我必须更新对象。知道如何在没有这种方法的情况下做到这一点吗?
我有任何改进建议,请随时发布。