Parcelable 및 번들 | Android 개발자 | Android Developers
직렬화(Serializable)란?
직렬화 (Serializable)
Parcelable
Pacelable은 안드로이드 SDK 에서 제공하는 직렬화 인터페이스다.
Activity 간에 Object 데이터를 전달할때, 혹은 프로세스간에 Object 데이터 전달을 하기 위해 사용된다.
Object 직접 전달이 안되고, Pacelable 를 사용해야 되는 이유는 다음과 같다.
Intent and Parcelable object Android
- 프로세스 간 통신:
- Activity 간에 데이터 전달은 Intent를 사용하며, 이 Intent는 프로세스간 통신(IPC)를 지원한다. 다른 프로세스에서 시작되는 Activity 나 서비스의 경우, 객체를 직접 전달할 수 없고, 객체를 직렬화 하여 전달해야 된다.
- Pacelable은 객체의 직렬화를 지원하며, 다른 프로세스에도 데이터를 전달할 수 있다.
- 안정성:
- 안드로이드 시스템은 메모리 부족이나 성능 문제로 인해 백그라운드의 어플리케이션을 언제나 종료할 수 있다.
- 사용자가 다시 어플리케이션으로 돌아왔을 때, 안드로이드는 새 프로세스를 생성하고 필요한 Activity를 재생성한다.
- 이 과정에서 Intent에 저장된 데이터를 사용하여 객체를 복원할 수 있어야 한다.
- Pacelable을 사용하면 직렬화된 데이터를 쉽게 복원할 수 있다.
- PendingIntents:
- PendingIntent를 사용할때, 수신되는 컴포넌트는 PendingIntent가 실제로 전송되는 시점에 활성화 되어있을 수도 있고 아닐수도 있다. 이 경우에도 PendingIntent에 전달되는 객체는 직렬화가 가능해야 안드로이드가 해당 객체를 보관할 수 있다.