티스토리 뷰
반응형
Bundle ?
우리가 여러가지 데이터들을 한번에 처리하기위해서 클래스를 만들고,
해당 클래스의 객체에 데이터들을 담고,
직렬화를 하기위해서 Serializable이나 Parcelable까지 구현을 해주고,
그리고 추가로 이 클래스가 데이터를 받는쪽에도 존재해야 한다.
이런 과정이 매우매우매우 번거롭기 때문에 등장한 녀석이라고 생각한다. (나는...)Bundle은 하나의 클래스이며,
우선 내장된 클래스기 때문에 데이터를 받는쪽에 해당 클래스를 전달해줘야되는 번거로움이 사라진다.
그리고 기본적으로 Serializable과 Parcelable이 구현되어 있어서 언제든지 자유롭게 직렬화를 할 수 있다.
그리고 Map의 형태로 데이터를 집어넣을수 있기 때문에 원하는데이터를 원하는만큼 저장할 수 있다
추가로 기억해야 할 점은 Intent는 데이터 덩어리라고 소개했지만, 내부적으로 직렬화된 데이터를 담아 하나로 묶어 직렬화 데이터 덩어리로 만들 수 있다는 점이다. (직렬화된 데이터 덩어리!!!!)
내부적으로 Bundle 클래스 객체에 저장하여 이러한 과정을 수행한다.
데이터 저장
public void putInt(String Key, int val);
public void putLong(String Key, long val);
public void putString(String Key, String val);
public void putSerializable(String Key, Serializable val);
데이터 읽기
public int getInt(String Key);
// ..... 이하 생략
Bundle도 하나의 객체이기 떄문에 당연히 Intent에 포함될 수 있다.
Bundle bundle = getBundleExtra("name"); 을 통해 포함된 Bundle객체를 꺼낸다.
참고로 Bundle을 사용하지 않고 내가 제작한 클래스에 implements Serializable을 한 후, Intent를 통해 전달할 경우에 해당 클래스를 가져오는 Intent의 내장함수가 없기 때문에 아래와 같은 방식을 사용한다.
Ch4njun ch4njun = intent.getSerializableExtra("name");
이 방법도 반드시 기억을 해주자. 혹시 모르니깐...ㅎㅎ
반응형
'Android > Concept' 카테고리의 다른 글
[Android] 브로드캐스트 리시버 ( Feat. 별쾅쾅 ) (0) | 2019.08.01 |
---|---|
[Android] 액티비티의 생명주기 (0) | 2019.07.29 |
[Android] 명시적 인텐트 & 암시적 인텐트 (0) | 2019.07.29 |
[Android] Activity & Intent (feat. Package Manager, Activity Manager) (0) | 2019.07.29 |
[Android] 이벤트 별쾅쾅. (0) | 2019.07.19 |