Application Object で苦労した後、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);
2 つのアプリでテストしましたが、古い電話や多くのオブジェクト (>100) でも問題なく動作します。
実装で唯一重要なことは、オブジェクトを更新する必要があることです。このメソッドなしでこれを行う方法はありますか?
改善のための提案があれば、お気軽に投稿してください。