onCreate 함수를 사용하면서 Bundle 이 뭘까 하는 생각은 많이 해보았지만 막상 찾아본적은 없었다. 그래서 찾아보았다.


Bundle은 Key-Value의 쌍으로 이루어진 일종의 해쉬맵 자료형이다.


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


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


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


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


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

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


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


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


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


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


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


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



참고


Android Bundle Class


[안드로이드] Activity,Fragment 에서 Bundle 로 Object, ArrayList 넘기기


Bundle(번들)이란?


Parcelable을 사용한 오브젝트 전달 (Object serialization using Parcelable)


[ANDROID] 안드로이드 BUNDLE

'안드로이드' 카테고리의 다른 글

안드로이드 리소스 ID  (0) 2017.11.27
serializable, parcelable  (0) 2017.11.24
안드로이드 Deprecated  (0) 2017.11.23
FLAG_ACTIVITY_NEW_TASK  (0) 2017.11.23
안드로이드 Intent, Task  (0) 2017.11.22
블로그 이미지

NCookie

,