繁体   English   中英

在Android中传递大型复杂对象

[英]Passing Large, Complex Objects in Android

我正在编写一个有趣的项目,该项目需要自定义对象内的自定义对象(例如:All_Animals,All_Dogs,All_Labs,My_Lab类型的东西)。 问题是我需要将一个对象从一个活动传递到另一个活动,但是该对象具有其他自定义对象的ArrayLists作为变量。 我显然可以将所有内容都转换为字符串,然后通过putExtra()传递给它,但这将需要大量额外的代码,并且保持事物的持久性和组织性将变得棘手。

无论如何,我的问题是在Java中(特别是在android中)将带有ArrayLists作为变量的复杂自定义对象从一个Activity传递到另一个Activity的最佳方法是什么?

在旧手机(例如Samsung S4 Mini)中,将大数据(包括base64图像)传递到Intent中可能是一个问题。

在这种情况下,我希望使用数据库。 如果您不想使用数据库,则可以使用Parcelable序列化对象并将其保存。

另一种方法是,使用Gson库序列化对象并将其保存到SharedPreferences 然后,在第二个活动中,仅通过钥匙即可收到。

//first activity
List<A lot of objects> list;
String jsonList = new Gson().toJson(list);
SharedPreferences preferences = context.getPreferences(Context.MODE_PRIVATE);
Editor editor = preferences.edit();
editor.putString("UNIQUE_LIST_KEY",jsonList);
editor.commit();
Intent intent = new Intent(context,SecondActivity.class);
intent.putExtra("LIST_KEY","UNIQUE_LIST_KEY");// pass only key to second activity/fragment

//second activity
SharedPreferences preferences = context.getPreferences(Context.MODE_PRIVATE);
String listJson = preferences.getString(getIntent().getStringExtra("LIST_KEY"),null);//get UNIQUE_LIST_KEY from intent and get string from preferences
if(listJson != null){
    List<A lot of objects> list = new Gson().fromJson(listJson, new TypeToken<List<A lot of objects>>(){}.getType());//
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM