[Android/안드로이드] kotlin , intent 로 객체 전달

2020. 5. 29. 18:58Android/깨알 개념 정리

intent 를 통해 객체를 전달하려면 Parcelable 또는 Serializable을 사용하면 된다.

그럼 이 둘은 어떻게 다른가? 

 

Parcelable vs Serializable

1. Parcelable (파슬러블)

- Parcelable은 직렬화를 위한 또다른 인터페이스로 Java 가 아닌 Android SDK 의 인터페이스이다 

 

2. Serializable  (시리얼라이저블)

- Serializable Android SDK 가 아닌 표준 Java 의 인터페이스이다 

 

 

Parcelable을 통한 데이터 전달 

1. @Parcelable annotation을 사용하여 데이타 클래스 생성 

import android.os.Parcelable
import kotlinx.android.parcel.Parcelize

@Parcelize
data class ParcelableData(
    val name: String,
    val age: Int
): Parcelable

 

2. intent 를 통하여 전달 

val parcelableData = ParcelableData("soyoung", 1)
val intent = Intent(this, MainActivity::class.java).apply {
    putExtra("parcelableData", parcelableData)
}
startActivity(intent)

 

Serializable을 통한 데이터 전달 

1. Serializable 인터페이스를 상속받은  데이타 클래스 생성 

import java.io.Serializable

data class SerializableData(
    val name: String,
    val age: Int
): Serializable

 

2. intent 를 통하여 전달 

val serializableData = SerializableData("soyoung", 1)
val intent = Intent(this, MainActivity::class.java).apply {
    putExtra("serializableData", serializableData)
}
startActivity(intent)

 

 

끝!!!!