Bundle(번들)이란?

Posted by ITPangPang
2017. 3. 16. 11:24 Android/공부





Bundle(번들)










Bundle


꾸러미, 묶음이라는 느낌을 가지고 있으며

안드로이드에서도 비슷하게 어떤 값을 보관하고

있다고 생각하면 된다.


여기서 어떤값을 보관할때

안드로이드에서는 Hash Map형태로

저장한다.

(Key,Value값을 put해서 보관)



안드로이드 개발자에게

이 Bundle은 아주 친숙할 것이다.


Activity의 첫 시작인 

onCreate에서 볼 수 있다.


protected void onCreate(Bundle savedInstanceState)



그럼 언제 보관 할 수 있는가?


Key, Value값을 put해서 보관하는 것은

알았는데, 그럼 언제 Bundle에 보관할 수 있을까?


안드로이드에서 Bundle은

Shut down 후 다시 초기화할때

보관할 수 있다.


Shut down 되는 상황은 다양한데

가장 많이 발생되는 경우는

메모리 부족으로 Shut down되는 경우와

디바이스를 가로, 세로모드로 바꿀때

Shut down되는 경우이다.



그래서 다시

protected void onCreate(Bundle savedInstanceState)

를 보자면


처음 onCreate에 들어올때

Bundle값인 savedInstanceState는

null값이 된다.


앱 실행시

Key, Value값을 put해서

보관하지 않았기 때문이다.


앱 최초 실행시에는

날라갈 데이터도 없기 때문에

따로 보관하는 과정이 없어도 된다.



Shut Down이 발생할때


Shut Down이 발생하면 데이터가

날라가기 때문에 이 시점에 우리는

Bundle에 값을 보관해야 한다.


그럼 Shut Down될때

데이터를 put 하기 위해서

코드의 어느 부분에서 처리해야 할까?


protected void onSaveInstanceState(Bundle outState)


위의 메서드를 오버라이드 해서

여기서 처리해주면 된다.

여기서 값을 보관하고



protected void onRestoreInstanceState(Bundle savedInstanceState)


값을 다시 받아올때는

위의 메서드를 오버라이드해서

get해서 값을 받아오면 된다.


Key값으로 접근하면 Value값을

받아올 수 있다.