30

したがって、AndroidではSerializableの代わりにParcelableを使用することをお勧めします。高速であるためです。

私の質問は次のとおりです。Serializable の権利を使用することを避けることは不可能ですか?

シリアライズしたいカスタムオブジェクトがある場合、次のクラス定義があるとしましょう

public class Person {
   String name;
   int Age;
   ...
   ....
}

Person クラスには parcel.write*() がサポートする型が含まれているため、これをパーセル化するのは簡単です。つまり、 parcel.writeString と parcel.writeInt があります。

では、Person クラスが次の場合はどうなるでしょうか。

public class PersonTwo {
   MyCustomObj customObj;
   String name;
   int Age;
   ...
   ....
}

MyCustomObj オブジェクトを分割するにはどうすればよいですか?? serializable をもう一度使用する必要があるようですか?繰り返しになりますが、シリアライズ可能を使用するのは遅いと思いました。この場合は使用するしかないようです。

理解できない

この場合、PersonTwo を分割する方法を教えてもらえますか?

4

4 に答える 4

16

Ajay によって提供されたリンクは、まさにあなたが探しているもの、その方法です。さて、あなたができることはParcelable、あなたに実装してそのクラスをCustomObject1作成するParcelableことです。次に、そのParcelableクラスをParcel別のクラス内でParcelable使用して、CustomObjects.

public class CustomObject1 implements Parcelable {

   // parcelable code CustomObject1
}

public class CustomObject2 implements Parcelable {

    private CustomObject1 obj1;

   // add  CustomObject1 here with getter setter
   // parcelable code for CustomObject2 

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeParcelable(obj1, flags);
    }  
    private void readFromParcel(Parcel in) {
        obj1 = in.readParcelable(CustomObject1.class.getClassLoader());
    }
  ............
}
于 2012-02-17T05:35:16.670 に答える
2

MyCustomObj を分割可能にする必要があります。

于 2012-02-17T05:12:42.653 に答える