将一个对象列表从一个Activity传递到另一个Android是不是一个好主意?
在intent中传递一个对象列表很麻烦,我想知道如果对象列表太大或对象太复杂,它是否会影响性能。
从其他地方获取对象列表是一个更好的解决方案,例如,再次查询数据库,或者将对象列表保存在临时类中并在新的Activity中获取它?
答案 0 :(得分:1)
只要您传递Parcelable
个对象'列表,通过Intent
时没有任何错误。关于性能,取决于您和您传递的数据量。
根据我的经验,如果您将数据传递到 1MB 的大小,那应该没问题。任何高于此的东西都会失败,因为这似乎是极限。阅读this。
此外,欢迎您使用首选项,SQLite,文件或静态对象引用方法随时随地获取数据。
答案 1 :(得分:0)
Solution1:使用Intent
发送:
Intent data = new Intent(Activity1.this,Activity2.class);
data.putParcelableArrayListExtra(Constant.LIST_OBJECT,
(ArrayList<? extends Parcelable>) getObjects());
收到:
List<YOUR_OBJECT> objects = data.getParcelableArrayListExtra(Constant.LIST_OBJECT);
解决方案2:
public class SessionData {
private static SessionData instance;
private final List< YOUR_OBJECT > listSessionObjects;
private SessionData() {
listSessionObjects = new ArrayList<>();
}
public static final SessionData getInstance() {
if (instance == null) {
instance = new SessionData();
}
return instance;
}
public List<YOUR_OBJECT> getListSessionObjects() {
return listSessionObjects;
}
public void setListSessionObjects(List<YOUR_OBJECT > objects) {
listSessionObjects = objects
}
}
使用它:
SessionData.getInstance().getListSessionObjects();
SessionData.getInstance(). setListSessionObjects(objects);