본문 바로가기

잡다한상식

안드로이드 bundle이 뭐야?

안드로이드 bundle이 뭐야?



Do It 안드로이드 프로그래밍 앱 중에서 p. 286...


" 인텐트 안에서 번들(Bundle) 객체가 들어 있는데,

번들 객체는 해시테이블과 유사해서 putExtra()와 get000Extra() 메소드로 데이터를 넣거나

빼낼 수 있습니다."


번들이 해시테이블과 유사하다...


그럼 또 해시테이블은 또 뭐야?


Hashtable은 HashMap과 동일한 내구 구조를 가지고 있고, HashMap은 Map인터페이스를

구현한 대표적 Map컬렉션,


Map컬렉션은 키(key)와 값(value)으로 구성된 Entry객체를 저장하는 구조를 가지고 있다.


여기서 키와 값은 모두 객체이다.


아래는,

http://ncookie.tistory.com/108 님의 글에서

가져온 내용입니다.


Bundle을 가장 이해하기 쉽게 풀어놓은 글입니다.


"

이 Bundle은 여러 상황에서 유용하게 사용될 수 있다.



1. 액티비티 간의 데이터 전달


Intent를 사용하여 액티비티끼리 데이터를 교환할 수 있는데, 만약 넘길 데이터가 있다면 URI 형식이나 putExtras() 함수를 이용한다.


그러나 객체 같은 경우 위와는 다른 방법을 필요로 한다. 이 때 Bundle을 사용한다.


처음에는 일부 글만 보고 Bundle에서는 parcelable만 지원하는줄 알았는데 serializable도 지원한다. 자세한 함수에 대해서는 공식 문서를 참조하자.


(객체 직렬화에 대해서는 다른 글에서 자세히 다룰 것이다)


어쨌든 Bundle이라는 자료형을 Intent에 넣어 데이터를 다른 액티비티에게 전달할 수 있다.




2. 어플리케이션의 이전 상태 저장


onCreate 함수를 선언할 때 볼 수 있는 Bundle savedInstance라는 매개변수가 바로 이것을 위해 존재하는 것이다.


보통 메모리가 부족하거나 화면이 가로, 세로 전환되었을 때 ShutDown 된다. 


이런 경우 앱을 다시 실행했을 때 기존의 데이터는 다 날라가게 되는데, 만약 중요한 데이터를 입력 또는 저장 중이었다면 큰 낭패일 것이다. 그래서 Bundle을 이용해 값을 저장할 수 있다.


onSaveInstanceState 와 onRestoreInstanceState 함수를 오버라이딩해서 값을 저장하고 보관한 데이터를 불러올 수 있다.


"


여기서...

parcelable 인터페이스 개념도 중요한데...


parcelable 인터페이스는

아래 링크에서 확인하면...


https://developer.android.com/reference/android/os/Parcelable.html


parcelable 인터페이스 : pacel에 인스턴스를 쓰고 복원할수있는 클래스이 인터페이스.

parcel : IBinder를 통해 전송할수있는 메시지(데이터 및 객체)를 담는 컨테이너.


더욱 번들에 대한 개념이 넓어질 것 같다.


어렵다... 어려워... ㅋ