티스토리 뷰

Android

객체 직렬화 - Parcelable

parkho79 2020. 3. 4. 15:12
300x250
300x250



지난 포스팅에서는 객체 직렬화의 개념과 Serializable 에 대해 알아 보았다.

[Android] - 객체 직렬화 - Serializable

 

이번 포스팅에서는 Parcelable 에 대해 알아보자.



Parcelable

Parcelable 은 Android SDK interface 로 reflection 을 사용하지 않게 설계된 interface 이다.

Parcelable 은 직렬화한 데이터 그 자체로 직렬화 처리 방법을 사용자가 명시적으로 작성하기 때문에 자동으로 처리하기 위한 reflection 이 필요 없다.

(Reflection 을 사용하지 않아 성능 측면에서 좋다.)

 

직렬화의 방법은 Serializable 보다 복잡하다.

- "implements Parcelable" 을 상속한다.

- 객체를 송신하기 위해 writeToParcel() 에 전달할 데이터를 순차적으로 저장한다.

  (Parcel 객체로 전달할 데이터를 직렬화 시켜준다.)

 

- 객체를 수신하기 위해 CREATOR 를 작성하고 createFromParcel() 로 전달받은 데이터를 순차적으로 읽어온다.

  (전달받은 Parcel 객체를 역직렬화 한다.)

 

또한, 하단과 같은 조건은 만족해야 한다.

- 직렬화 class 는 송신, 수신 모두 동일해야 한다.

- 직렬화 class 의 패키지 명이 같아야 한다.

- Parcel 객체에 데이터를 추가한 순으로 데이터를 읽어야 한다.

 

◼ 직렬화 class (송수신 공통)



◼ 송신부



◼ 수신부



Reference

하단은 예전 자료이긴 하지만 Serializable 와 Parcelable 의 성능을 비교할 수 있는 자료다.

 

이미지 출처 : http://www.developerphil.com/parcelable-vs-serializable/



Source code

◼ 송신부

https://github.com/parkho79/ParcelableSender

 

◼ 수신부

https://github.com/parkho79/ParcelableReceiver



728x90

'Android' 카테고리의 다른 글

Android 진동 울리기  (1) 2020.06.18
객체 직렬화 - Bundle  (0) 2020.03.19
객체 직렬화 - Serializable  (0) 2020.02.28
TextView 글자크기를 동적으로 변경하기  (0) 2020.02.21
AndroidX  (0) 2020.02.12
댓글