마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Parcelable Unmarshalling 에러입니다 ㅠㅠ 도와주세요

0 추천
Intent intent = new Intent(this, CinepoxServiceRestarter.class);
intent.putExtra("appconfig", app().getAppConfig());
Bundle b = intent.getExtras();
if (b != null) {
    if (b.getParcelable("appconfig") != null)
	app().setAppConfig((AppConfigData) b.getParcelable("appconfig"));
}

밑에는 받는 쪽 코드고, 위에는 보내는 쪽 코드입니다.

받는 쪽도 보내는 쪽도 모두 서비스입니다. immotal service를 구현하면서 유지해야 할 데이터가 있어

Parcelable을 이용한 인텐트로 알람매니저를 사용하는데요.

인텐트가 브로드캐스트를 거쳐서 다시 서비스로 돌아오게 됩니다.

보내는 쪽에서 마샬링 할때는 아무 문제가 없는데,

받는 쪽에서 언마샬링 할때 

 

03-19 13:25:45.866: E/AndroidRuntime(15939): Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@41988008: Unmarshalling unknown type code 7929953 at offset 692
03-19 13:25:45.866: E/AndroidRuntime(15939): at android.os.Parcel.readValue(Parcel.java:2032)
03-19 13:25:45.866: E/AndroidRuntime(15939): at android.os.Parcel.readMapInternal(Parcel.java:2225)
03-19 13:25:45.866: E/AndroidRuntime(15939): at android.os.Bundle.unparcel(Bundle.java:223)
03-19 13:25:45.866: E/AndroidRuntime(15939): at android.os.Bundle.getParcelable(Bundle.java:1165)
03-19 13:25:45.866: E/AndroidRuntime(15939): at com.busan.cw.clsp20120924.controller.CinepoxService.handleStart(CinepoxService.java:55)
03-19 13:25:45.866: E/AndroidRuntime(15939): at com.busan.cw.clsp20120924.controller.CinepoxService.onStartCommand(CinepoxService.java:47)
03-19 13:25:45.866: E/AndroidRuntime(15939): at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2490)
03-19 13:25:45.866: E/AndroidRuntime(15939): ... 10 more
 
요러한 에러가 뜹니다.
 
에러 뜨는 라인의 코드는
Bundle b = intent.getExtras();
if (b != null)
	if (b.getParcelable("appconfig") != null)

요렇습니다.

암만 구글링을 해도 모르겠습니다 ㅠㅠ Parcelable은 처음 써보는 거라 너무 어렵네요..

 

퐁풍 (8,740 포인트) 님이 2013년 3월 19일 질문

1개의 답변

0 추천
 
채택된 답변
자답입니다.

Parcelable 생성자에서 read하는 순서와 write하는 순서가 달랐습니다.
퐁풍 (8,740 포인트) 님이 2013년 3월 19일 답변
...