안드로이드에서 Actvity 간의 Object 통신을 해야 하는 경우가 많습니다.
알려진 바로는 Object 에 Parseable 설정을 해서 Bundle 에 태워 보내는 방법이 있는데
전 이게 너무 불편하더군요..
그래서 JsonObject를 이용해 통신을 하는 방법을 사용합니다.
자세한 설명은 제 블로그에 있습니다.
http://www.tedhome.net/2013/01/json을-이용한-activity-간의-object-주고-받기/
블로그에 올리고 퍼오려니까
중간에 삽입한 소스 하이라이터 때문에 이상하게 되더군요.. ㅠ_ㅠ
링크만 덜렁 올려서 죄송합니다..
부디 초보분들께 도움이 되었으면 합니다.
고맙습니다 :)
Android, Unity3D
Activity 간에 Bundle 로 넣어서 보내는건 내부공유공간을 (Android Shared Memory) 사용하기 때문에 안전합니다.
Binder 속도도 상당히 빠르고요..
위에 노브레인님이 언급하였듯이..직렬화를 거쳐서 이동하기 때문에 마샬 ,언마샬링 할때의 불편함이 있지만..
속도는 Parseable 이 빠를거 같습니다.
다만.. 귀찮은게.....
객체 클래스뒤에 Serializable을 implement 해주시고(직렬화) 받는 쪽 Intent 에서 getSerializableExtra할때 강제 캐스팅 해도 객체 넘길수있습니다. Json 으로 넘기면 일일이 다 다시 파싱해줘야하는데 객체 자체로 넘기면 그대로 사용할수 있습니다. Parcelable 보다도 간편하구요.
아직 안드로이드에서 json 파싱속도를 걱정할정도의 앱을 구경해본적이 없어서 json 외에 다른방법을 써 본적이 없네요. 실시간 socket 통신에서도 잘만 돌아가는뎅..
Serializable과 Parcelable에 대해서는 아래 링크를 한번 읽어보시는 것도 좋을 듯 합니다.
http://stackoverflow.com/questions/5550670/benefit-of-using-parcelable-instead-of-serializing-object
편하긴 하지만 단방향적인 데이터치고는 너무 메모리를 잡아먹는 방법일 수도 있지 않나 생각하네요.
JSON 파싱 자체가 메모리를 잡아먹는 방식이라서..
일정 이상의 크기를 가진 데이터는 언제나 그랬듯이 DB 나 프리퍼런스로 저장했다가
관련 인덱스값만 넘기는게 최고지요..