在應用程序對象遇到困難之後,我對使用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