这是我作为Android初学者一直在努力解决的问题。我在网上找不到任何关于处理复杂对象的好教程。我见过的所有例子都涉及只保存基元的简单类。
但是,在我的情况下,我有一个复杂的Maze对象聚合其他对象。
例如,这是我的迷宫课程:
public class Maze {
int mazew; // width of maze
int mazeh; // height of maze
Cells mazecells ; // maze as a matrix of cells which keep track of the location of walls
Distance mazedists ; // a matrix with distance values for each cell towards the exit
Cells seencells ; // a matrix with cells
BSPNode rootnode ; // a binary tree type search data structure to quickly locate a subset of segments
...
这是Cells类:
public class Cells {
private int width;
private int height ;
private int[][] cells;
...
我如何分割包含其他物体的Maze等物体?如果这些聚合对象还包含其他对象,该怎么办如果我不得不做嵌套的parcelables,我无法想象试图解析整个对象链!如何以最佳方式在活动之间传递Maze
对象的任何建议都值得赞赏!
答案 0 :(得分:2)
只要让你想要传递的所有对象都通过Parcelable(通过实现Parcelable interface),并且因为每个Parcelable对象都包含自身以及它所有的基本上所有你需要做的事情(并且要打扰:) / p>
答案 1 :(得分:1)
如果您想要创建复杂对象Parcelable的原因是跨活动/片段共享它,那么您可以考虑使用EventBus。 EventBus允许您传递普通的Java对象,避免为复杂对象所依赖的每个对象实现Parcelable的工作。
或者,如果性能不是一个因素,Serializable通常是Parcelable的直接替代品。使用Serializable通常会在向类添加implements Serializable
时进行简单的代码更改。有关性能差异的详细信息,请参阅Parcelable vs Serializable。