Android-包含其他对象的parceling对象?

时间:2014-11-22 01:25:31

标签: android parcelable

这是我作为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对象的任何建议都值得赞赏!

2 个答案:

答案 0 :(得分:2)

只要让你想要传递的所有对象都通过Parcelable(通过实现Parcelable interface),并且因为每个Parcelable对象都包含自身以及它所有的基本上所有你需要做的事情(并且要打扰:) / p>

答案 1 :(得分:1)

如果您想要创建复杂对象Parcelable的原因是跨活动/片段共享它,那么您可以考虑使用EventBus。 EventBus允许您传递普通的Java对象,避免为复杂对象所依赖的每个对象实现Parcelable的工作。

或者,如果性能不是一个因素,Serializable通常是Parcelable的直接替代品。使用Serializable通常会在向类添加implements Serializable时进行简单的代码更改。有关性能差异的详细信息,请参阅Parcelable vs Serializable