Android Intent에서 Bundle을 왜씀?
Intent
Android 에서 intent 는 메시싱 객체로 다른 요소로부터 작업을 요청하는데 사용할 수 있다. 대표적으로 사용하는 방법이 역시 액티비티를 호출하는 것이다.
궁굼
intent에서 데이터를 전달하는 방법으로 인텐트 내부에 구현되어 있는 putExtra() 메서드를 활용하는 방법이 있다.
여기서 궁굼한것이 생겼다.
//1
val intent = Intent()
intent.putExtra("key","value")
//2
val intent = Intent()
val bundle =Bundle()
bundle.putString("key","value")
intent.putExtra("bundle",bundle)
1번 방법과 2번 방법의 차이가 무엇일까
나는 항상 1번 방법을 사용하고있었는데 2번 방법이있다는걸 알게되었다.
위와 같이 두 방식을 사용하게 돼도 같은 결과가 이루어지게 되는데
한눈에 봐도 Bundle를 사용하는 부분이 더 손이 많이 가고 번거로움을 알 수 있다.
그래서 나는 Bundle를 사용하지 않는 게 더 편해 보이긴 한다.
내부 구조
편한 건 Bundle를 사용하지 않는 것이 분명 편한 건 있다.
하지만 내부 구조를 보면 말이 달라진다.(아마도)
private Bundle mExtras;
public @NonNull Intent putExtra(String name, @Nullable String value) {
if (mExtras == null) {
mExtras = new Bundle();
}
mExtras.putString(name, value);
return this;
}
Intent의 putExtra()는 결국 Bundle를 사용하고 있다.
즉 putExtra()는 단순히 편리함을 위해 도와주고 있는 모습으로 보인다.
그에 반해
ArrayMap<String, Object> mMap = null;
public void putString(@Nullable String key, @Nullable String value) {
unparcel();
mMap.put(key, value);
}
Bundle의 메서드를 확인해보면 Map를 활용하여 데이터를 넣고 있다.
결론
그럼 내부적으로는 Bundle를 쓰고 있느니
그냥 편리한 Intent의 메서드들을 활용하는 게 좋은 걸까
if (mExtras == null) {
mExtras = new Bundle();
}
문제는 intent에 직접적으로 데이터를 넣으면 위의 코드를 지나가게된다.
즉 데이터를 넣을 때마다 조건문을 한번 통과를 해야 하는 것인데.
그에 반해 Bundle을 사용하면
mMap.put(key, value);
Map에 바로 put 하기 때문에
데이터를 넣는 양에 따라 속도 차이가 날… 수도 있겠다.
결론적으로 Bundle를 활용하는 게 더 좋아 보인다.
Author And Source
이 문제에 관하여(Android Intent에서 Bundle을 왜씀?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@rkvps11369/Android-Intent에서-Bundle을-왜씀저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)