Parcelable은 안드로이드에서 객체를 직렬화하는데 사용되는 인터페이스라고 이해하면 될 것 같다. 여기서 Java의 Serialization과 다른점은 Parcelable은 Reflection 구현 대신 직렬화에 대한 처리를 명시적으로 한다.
마셜링은 프로세스간 또는 스레드 간 데이터 전송에 필요한 원격 프로시저 호출(remote procedure call, RPC) 매커니즘의 구현에 사용된다.
Parcelable은 아래의 경우에 사용된다.
1. IPC 통신
2. Intent로 컴포넌트간 데이터 전달
먼저 IPC 통신은 프로세스간의 데이터 전송을 의미하며, AIDL을 활용 시 원시타입이 아닌 참조타입을 전달할 경우 Parcelable 객체로 전달해야 한다.
구현은 Parcelable 인터페이스를 구현하여 선언한 클래스를 생성하면 된다.
예제 코드는 아래와 같다.
import android.os.Parcel
import android.os.Parcelable
class Rect() : Parcelable {
var left: Int = 0
var top: Int = 0
var right: Int = 0
var bottom: Int = 0
companion object CREATOR : Parcelable.Creator<Rect> {
override fun createFromParcel(parcel: Parcel): Rect {
return Rect(parcel)
}
override fun newArray(size: Int): Array<Rect> {
return Array(size) { Rect() }
}
}
private constructor(inParcel: Parcel) : this() {
readFromParcel(inParcel)
}
override fun writeToParcel(outParcel: Parcel, flags: Int) {
outParcel.writeInt(left)
outParcel.writeInt(top)
outParcel.writeInt(right)
outParcel.writeInt(bottom)
}
private fun readFromParcel(inParcel: Parcel) {
left = inParcel.readInt()
top = inParcel.readInt()
right = inParcel.readInt()
bottom = inParcel.readInt()
}
override fun describeContents(): Int {
return 0
}
}
참고링크:
https://developer.android.com/reference/android/os/Parcelable
Parcelable | Android 개발자 | Android Developers
Known indirect subclasses AbsSavedState, AbsoluteSizeSpan, AccessibilityEvent, AccessibilityGestureEvent, AccessibilityNodeInfo, AccessibilityNodeInfo.AccessibilityAction, AccessibilityNodeInfo.TouchDelegateInfo, AccessibilityServiceInfo, AccessibilityWind
developer.android.com
https://developer.android.com/reference/android/os/Parcel
Parcel | Android 개발자 | Android Developers
Parcel public final class Parcel extends Object java.lang.Object ↳ android.os.Parcel Container for a message (data and object references) that can be sent through an IBinder. A Parcel can contain both flattened data that will be unflattened on the other
developer.android.com
마샬링 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 컴퓨터 과학에서 마셜링(marshalling, l을 하나만 사용하여 marshaling이라고도 표기)이란 한 객체의 메모리에서 표현방식을 저장 또는 전송에 적합한 다른 데이터 형식으로 변환하는 과정이다. 또한 이는 데이터를 컴퓨터 프로그램의 서로 다른 부분 간에 혹은 한 프로그램에서 다른 프로그램으로 이동해야 할 때도 사용된다. 마셜링은 직렬화(serialization)와 유사하며 한 오브젝트, 여기서는 직렬화 된 오브젝
ko.wikipedia.org
'안드로이드' 카테고리의 다른 글
Android - Bottom Dialog (BottomSheetDialogFragment) (0) | 2020.05.23 |
---|---|
Android - Handler 정리 (0) | 2020.04.29 |
Android - Xml 파싱(XmlPullParser) (0) | 2020.04.06 |
Android - 화면 당겨서 새로고치는 방법(SwipeRefreshLayout 사용 방법) (0) | 2020.04.03 |
Android Data Binding을 활용한 ViewPager와 TabLayout 연결 (0) | 2020.03.24 |