[Android] Parcelable 생성 Parcelize로 편하게 생성하기(with Serializable)

2022. 7. 24. 22:02·Android/Libraries
반응형

안녕하세요. 이번에는 Parcelable에 대해 알아보고 Parcelize를 사용하는 방법을 알아볼까 합니다.

 

오늘 알아볼 Serializable / Parcelable은 데이터들을 직렬화하여 관리하는 인터페이스입니다.

 

Serializable

원래 기존에는 Serializable 객체라는 것을 사용했습니다. Serializable은 자바의 표준 Interface입니다.

data class Test(
	val a: String,
    val b: Int,
    val c: Boolean
) : Serializable

위와 같이 매우 간편 직렬화 인터페이스를 구현할 수 있습니다. 하지만 Serializable은 성능 저하를 불러일으킬 수 있다는 단점이 있습니다. 

Parcelable

위의 Serializable의 단점 때문에 생겨난 것이 바로 Android SDK의 인터페이스인 Parcelable입니다.

data class Test(
    val a: String?,
    val b: Int?,
    val c: Long?
) : Parcelable {
    constructor(parcel: Parcel) : this(parcel.readString(), parcel.readInt(), parcel.readLong())

    override fun describeContents() = 0

    override fun writeToParcel(parcel: Parcel, flags: Int) {
        parcel.writeString(a)
        parcel.writeInt(b ?: 0)
        parcel.writeLong(c ?: 0L)
    }

    companion object CREATOR : Parcelable.Creator<Test> {
        override fun createFromParcel(parcel: Parcel) = Test(parcel)

        override fun newArray(size: Int) = arrayOfNulls<Test>(size)
    }
}

writeToParcel은 데이터를 직렬화 하여 저장하기 위한 메서드 입니다.메서드입니다.  그리고 createFromParcel은 저장된 데이터를 역직렬화 하기 위해 사용되는 메서드입니다.

하지만 위의 Serializable과의 차이가 보이시나요? Serializable의 성능 저하는 개선되었지만 직렬화 객체 하나 생성하는데 코드 길이가 상당히 길어지게 되었습니다.

 그래서 Serializable의 간결성을 가지고 Parcelable을 생성하기 위해 생겨난 것이 바로 Parcelize입니다. 그럼 이제 Parcelize의 사용법을 알아보겠습니다.

Parcelize
  • build.gradle(Module: app)
plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    // Parcelize
    id 'kotlin-parcelize'
}

android {
	...
}

dependencies {
	...
}

build.gradle(Module: app)으로 가서 kotlin-parcelize를 plugins에 입력한 후 Sync를 해줍니다.

  • Test.kt
@Parcelize
data class Test(
	val a: String,
    val b: Int,
    val c: Boolean
) : Parcelable

plugins만 설정해주면 annotation을 추가하는 것으로 Serializable처럼 간편하게 Parcelable을 구현할 수 있습니다!

 

문제가 있거나 이해가 되지 않는 부분이 있으시면 댓글을 남겨주시면 답변드리겠습니다!

반응형

'Android > Libraries' 카테고리의 다른 글

[Android] 안드로이드 Permission(권한) 예제 - 연락처/주소록 만들기 (연락처 추가/수정)  (0) 2022.08.07
[Android] 안드로이드 Permission(권한) 예제 - 연락처/주소록 만들기 (권한 획득, 연락처 불러오기)  (0) 2022.07.24
[Android] 안드로이드 Permission(권한) 종류 및 권한 획득 예제(지문인증 / 생체 인증)  (0) 2022.07.11
[Android] 안드로이드12 대응 SplashScreen(스플래시 스크린) 만들기  (1) 2022.07.09
[Android] Glide를 사용하여 ImageView에 사진 불러오기  (0) 2022.07.03
'Android/Libraries' 카테고리의 다른 글
  • [Android] 안드로이드 Permission(권한) 예제 - 연락처/주소록 만들기 (연락처 추가/수정)
  • [Android] 안드로이드 Permission(권한) 예제 - 연락처/주소록 만들기 (권한 획득, 연락처 불러오기)
  • [Android] 안드로이드 Permission(권한) 종류 및 권한 획득 예제(지문인증 / 생체 인증)
  • [Android] 안드로이드12 대응 SplashScreen(스플래시 스크린) 만들기
W_JIN
W_JIN
안드로이드 개발을 공부하는 3년차 개발자입니다.
  • W_JIN
    W.JIN
    W_JIN
  • 전체
    오늘
    어제
    • 전체 (24)
      • Android (23)
        • Design (10)
        • Libraries (8)
        • Others (5)
      • Flutter (0)
        • Design (0)
        • Libraries (0)
        • Others (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    방법
    contact
    Grid
    설정
    안드로이드 스튜디오
    linear
    permission
    android studio
    안드로이드
    textview
    frame
    COLOR
    아이콘
    뷰
    사용법
    권한
    종류
    Android
    fonts
    연락처
    사용 방법
    사용방법
    layout
    constraint
    색상
    다운로드
    레이아웃
    contacts
    parcelize
    iCon
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
W_JIN
[Android] Parcelable 생성 Parcelize로 편하게 생성하기(with Serializable)
상단으로

티스토리툴바