2010-07-30 4 views
6

Android의 인 텐트는 커플 링되지 않은 구성 요소간에 메시지를 전달하는 멋진 방법이지만 인 텐트로 추가 데이터를 보내려면 어떻게해야합니까? 다양한 값 유형과 Parcelable을 구현하는 객체를 엑스트라로 추가 할 수 있지만이 방법은 사용자 정의 유형을 로컬 (즉, 원격 인터페이스가 아닌)로 전송하는 데 실제로 적합하지 않습니다. 어떤 아이디어?Android에서 인 텐트를 사용하여 맞춤 데이터 개체를 보내는 방법은 무엇입니까?

답변

0

로컬로 말하면 동일한 APK에 속한 활동/로컬 서비스에서 사용자 정의 유형을 보내는 것입니까? 사용자 정의 유형이 분류 가능하다면 intent의 추가 항목으로 전송 될 수 있으며 서비스/활동의 onStartCommand()에서 처리 될 수 있습니다.

+0

, 모두, 같은 응용 프로그램입니다. 사실, 복잡한 사용자 정의 데이터 유형을 구현할 때 필자는 의도가있는 객체를 전송해야 할 때 실제로 매우 고통 스러울 수 있습니다. – MalcomTucker

1

당신은 당신이 당신의 자신의 Application 유지하기 위해 글로벌 상태를 구현할 수있는 하나의 프로세스 내에서 객체를 전달하려는 경우 : 글로벌 응용 프로그램 상태를 유지 에 필요로하는 사람들을 위해

기본 클래스를. 당신 해당 클래스 응용 프로그램/패키지 과정 가 만든 때 당신을 위해 인스턴스화 원인이 될 것이다, 당신의 의 AndroidManifest.xml의 태그에 이름을 지정 하여 자신의 구현을 제공 할 수 있습니다.

+0

OK, 공유 데이터를위한 브로커/저장소의 종류로 응용 프로그램을 사용 하시겠습니까? – MalcomTucker

+0

정확하게 필요하면 저장소로 구현할 수 있습니다. –

4

유형에 따라 Serializable 인터페이스를 구현하고 Intent.putExtra(String, Serializable) 메서드를 호출하여 인 텐트에 포함 할 수 있습니다. 나는 유사한 문제에 대해 직접하는 것으로 생각했지만 데이터 유형이 두 개의 필드 만 가지므로 번들로 데이터를 넣는 것으로 선택했지만 노력할 가치가 없었습니다.

이것은 당신이 푸에 Serializable을 구현 한 가정, 일할 수있는 방법입니다 같은 과정에서

Foo test = new Foo(); 
test.Name = "name"; 
test.Value = "value"; 

Intent intent = new Intent(); 
intent.putExtra("test", test); 
AIDL을 통해하지와 같이 로컬
관련 문제