안드로이드 bundle 예제

그림 11. 번들로 전달된 값을 표시하는 AndroidSecondActivity입니다. 이제 AndroidSecondActivity로 전달되는 번들 오브젝트를 만듭니다. 우리는 코드와 함께 번들에 데이터를 저장합니다 : 번들에서 값을 제거하려면 remove() 메서드가 아래와 같이 관련 키와 함께 전달됩니다. 의도의 데이터는 번들로 설명됩니다. 번들 개체는 활동 간에 데이터를 전달하는 데 사용됩니다. 이 데이터는 의도에서 getExtras() 메서드를 통해 검색할 수 있습니다. 번들 개체는 실제로 키와 값 쌍을 저장하는 해시 컨트롤입니다. 이 클래스에 포함된 전체 설명서 및 공개 메서드는 Android 번들에 대한 개발자 참조에 요약되어 있습니다. 참고: Android 7.0(API 수준 24) 이상에서는 시스템이 트랜잭션TooLargeException을 런타임 예외로 throw합니다.

안드로이드의 낮은 버전에서, 시스템은 logcat에 경고를 보여줍니다. 이 예제에서는 기본 Android 번들 예제를 표시 하여 기본 Android 번들 예제에서 Android 번들 활동에서 Android두 번째 활동으로 Android 번들 로 전달합니다. 재커리 스위가트는 Uber의 공유 라이드 팀의 안드로이드 엔지니어입니다. 지정된 번들의 사본을 만듭니다. 내부 컨테이너로 트래버스하고 복사하여 번들 간에 공유되지 않습니다. 번들, 지속 가능한 번들, ArrayList 및 모든 유형의 기본 배열로 이동합니다. 다른 유형의 객체(예: 구획 가능 또는 Serializable)는 있는 것으로 참조되며 어떤 식으로든 복사되지 않습니다. 첫 번째 버튼은 두 번째 버튼이 빈 번들 노트를 전달하는 동안 두 번째 활동.java에 데이터가있는 번들을 전달합니다 : 예상 값이 Android 플랫폼에서 제공하는 클래스가 아닌 경우 setClassLoader (java.lang.classLoader)를 호출해야합니다. 먼저 적절한 클래스 로더. 그렇지 않으면 이 메서드는 예외를 throw하거나 null을 반환할 수 있습니다. 이 코드 조각에서 AndroidBundleExample의 activity_main에 대한 편집텍스트 및 확인란 보기에서 데이터를 얻을 수 있습니다.

여기서 는 의도를 만들고 AndroidSecondActivity에 전달하기 위해 추가 번들을 넣었습니다. Uber의 Android 라이더 앱에 대한 번들 GCM 개체의 번들 해제를 제거하는 방법에 대한 솔루션을 조사할 때, 일반적으로 읽기 전용으로 제공되는 데이터일 뿐만 아니라 알림에 표시된 데이터를 채우고 비즈니스를 결정하는 데도 사용된다는 사실을 깨달았습니다. 보류 중인 해당 의도에 대한 논리입니다. 이러한 개체는 값 클래스의 주요 예입니다. 인스턴스의 상태에 따라 equals, hashCode 및 toString의 구현이 있는 클래스입니다. 위의 간단한 버전은 데이터가 번들에 적절한 유형으로 저장되는 경우를 처리합니다. 그러나 앞에서 설명한 것처럼 GCM은 문자열 문자열 쌍의 모든 데이터를 직렬화합니다. 이를 처리하기 위해 확장에는 번들의 모든 데이터를 문자열로 읽고 기본 형식 구문 분석 또는 Gson 인스턴스를 사용하여 적절한 반환 유형으로 변환하는 클래스 수준 별칭 @GCMBundle 포함됩니다. ArrayList 같은 매개 변수화된 개체를 처리할 수도 있습니다. 반복적인 구획 코드를 처리하기 위해 AutoValue 확장이 존재하지만 번들에는 하나가 없었습니다.

Uber에서 이 문제를 해결하기 위해 자동 가치: 번들 확장을 만들고 오픈 소스로 만들었습니다. 이 문서에서는 새로운 도구가 데이터를 번들 해제하고 형식 간섭을 처리하는 방법에 대해 설명하여 Android 엔지니어가 데이터를 값 클래스로 빠르게 언번싱할 수 있도록 합니다. 이 도구는 버그와 반복 코드가 발생할 가능성을 줄이고 형식 정보를 잃어 버리는 것을 줄여 Android 사용자의 전반적인 앱 환경을 개선합니다. Android 번들은 프로세스 경계를 넘나드는 데이터를 전달하고 의도로 전송하고 구성 변경 사이에 상태를 저장하는 데 편리하고 때로는 필요한 개체입니다.