Подтвердить что ты не робот

Android Parcelable и Serializable

Итак, я знаю, что рекомендуется использовать Parcelable вместо Serializable в android, потому что это быстрее.

Мой вопрос: невозможно ли избежать использования права 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? но опять же, я думал, что SLOW использует сериализуемое, и кажется, что у нас нет выбора, кроме как использовать его в этом случае.

Я не понимаю

может кто-нибудь сказать мне, как я буду обрабатывать PersonTwo в этом случае?

4b9b3361

Ответ 1

Ссылка, предоставленная 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());
    }
  ............
}

Ответ 2

Вам нужно сделать MyCustomObj обоснованным.

Ответ 3

Все составные объекты также должны быть Parcelable. В случае, если вы хотите пропустить объект, тогда не используйте метод writeToParcel.

Ответ 4

Я пришел к выводу, что Parcelable - проблема для меня. На Android 4.3 я получаю исключение для исключения, когда передаю данные между Мероприятия как возможные. Он работает нормально на Android 4.0, 4.2 или 4.4. Он должен работать, если он изменен на Serializable, хотя он медленнее.