티스토리 뷰
Android 에서는 activity 간 데이터를 전달하기 위해 인텐트에 데이터를 추가한다.
전달할 데이터가 class 인 경우 Serializable or Parcelable 을 사용하거나 Bundle 을 이용해 객체 직렬화를 해야한다.
이번 포스팅에서는 객체 직렬화에 대해 알아보자.
직렬화 & 역직렬화
◼ 직렬화 (Serialize)
자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환하는 기술.
JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환하는 기술
◼ 역직렬화 (Deseialize)
Byte 로 변환된 data를 원래대로 object 나 data로 변환하는 기술.
직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM 으로 상주시키는 형태.
Why?
각기 다른 process 들은 서로 데이터를 주고 받을 수 없다.
(메모리를 공유할 수 없다.)
다른 process 에 데이터를 전달하기 위해 IPC (Inter Process Communication) 를 사용한다.
IPC 는 byte stream 전송이 가능하므로 직렬화가 필요하다.
Serializable
Serializable 은 Android SDK 가 아닌 JAVA interface 로 해당 class 가 직렬화 대상이라고 알려주는 marker interface 이다.
(Serializable 은 reflection 을 사용하여 직렬화를 처리함으로 성능저하가 발생할 수 있다.)
직렬화의 방법은 "implements Serializable" 를 상속만 하면 된다.
상속만 받으면 자동으로 직렬화가 처리된다.
단, 하단과 같은 조건은 만족해야 한다.
- 직렬화 class 는 송신, 수신 모두 동일해야 한다.
- 직렬화 class 의 패키지 명이 같아야 한다.
- serialVersionUID 가 같아야 한다.
◼ 직렬화 class (송수신 공통)
◼ 송신부
◼ 수신부
Source code
◼ 송신부
https://github.com/parkho79/SerializeSender
◼ 수신부
https://github.com/parkho79/SerializeReceiver
'Android' 카테고리의 다른 글
객체 직렬화 - Bundle (0) | 2020.03.19 |
---|---|
객체 직렬화 - Parcelable (0) | 2020.03.04 |
TextView 글자크기를 동적으로 변경하기 (0) | 2020.02.21 |
AndroidX (0) | 2020.02.12 |
Gradle 로 여러가지 버전 생성하기 (2) | 2020.02.10 |
- Total
- Today
- Yesterday
- onCreateContextMenu
- 무료채굴
- 리워드 어플
- p2e
- task
- android intent
- android task
- WEMIX
- notifyDataSetChanged
- task 생성
- Android Service
- Intent
- android activity flag
- 채굴앱
- 앱테크
- bindservice
- 무료 채굴
- BroadcastReceiver
- 리워드앱
- StringUtils
- onContextItemSelected
- M2E
- android flag activity
- 앱테크 추천
- registerForContextMenu
- mPANDO
- RoomDatabase
- StartService
- 안드로이드 인텐트
- 안드로이드 서비스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |