Класи, що підтримують сериализацию – Android

&nbsp

API Parcel може працювати не тільки з шістьма примітивними типами даних, які згадані в попередньому розділі У документації Android наводиться повний список parcel able-типів, і їх зручно поділяти на чотири групи

До першої групи – прості типи – відносяться null, шість примітивних типів (int, float і т д) та упаковані (boxed) версії шести примітивних типів (Integer, Float і т д)

Наступна група включає в себе типи обєктів, що реалізують Serial іzable або Parcelablе Ці обєкти не є простими, але їм відомо, як серіалізовать себе

До ще однієї групи – типи колекцій – відносяться масиви, списки, карти, пакети і розріджені масиви обєктів тих типів, які входять у дві попередні групи (int [], float [], ArrayList , HashMap , Bundle , SparseArray і т д)

Нарешті, є кілька особливих випадків: CharSequence і активні обєкти (IBinder)

У той час як всі ці типи допускають маршалинга в Parcel, з типами Senalіzable і Map так краще не вступати Як було зазначено вище, Android підтримує нативну сериализацию Java Її реалізація сильно поступається за ефективністю іншим частинам Parcelable Реалізація інтерфейсу Serialіzable – не кращий спосіб зробити обєкт parcelablе Навпаки, обєкти повинні реалізовувати Parcelabl е і додавати обєкт CREATOR і метод writeToParcel, як це описано в підрозділі «Обєкт Parcelable для передачі даних» вище Дане завдання може бути досить трудомісткою, якщо ієрархія обєктів складна Але оптимізація продуктивності, яка при цьому досягається, зазвичай коштує витрачених зусиль

Ще один тип, який не слід робити parcelable, – це Map Взагалі, Parcel не підтримує карти виняток становлять тільки такі карти, ключі яких є строковими Специфічний для Android тип Bundle надає аналогічну функціональність – карту із строковими ключами, – але до того ж він гарантує безпеку типів Обєкти додаються до Bundl е за допомогою таких методів, як putDouble і putSparseParcelableArray, по одному методу для кожного parcelable-типу Bundle дуже схожий на карту, за тим винятком, що він може містити різні типи обєктів для різних ключів, гарантуючи при цьому повну безпеку типів Користуючись Bundle, ви уникаєте цілого класу помилок, які складно знаходити і які виникають, коли, наприклад, сериа-лізованних float помилково приймається за int

Безпека типів – ще одна причина, по якій методи writeTypedArray і writeTypedList предпочительнее їх нетипізований аналогів writeArray HwriteList

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*