我已在activity中完成此操作。这里响应变量是自定义对象LeaseDetailResponse类型的ArrayList。
Intent intent = new Intent(TestActivity.this, AlarmService.class);
intent.putParcelableArrayListExtra(AlarmService.LEASE_DETAIL_RESPONSE_LIST, (ArrayList<? extends Parcelable>) Parcels.wrap(responses));
startService(intent);
在AlarmService
Parcels.unwrap((Parcelable) intent.getParcelableArrayListExtra(LEASE_DETAIL_RESPONSE_LIST));
显示错误
java.lang.ClassCastException: org.parceler.NonParcelRepository$ListParcelable cannot be cast to java.util.ArrayList
Caused by: java.lang.ClassCastException: org.parceler.NonParcelRepository$ListParcelable cannot be cast to java.util.ArrayList
答案 0 :(得分:2)
问题在于你的演员阵容到了ArrayList ...... Parceler只处理Parcelable。您需要使用putExtra()
而不使用强制转换:
Intent intent = new Intent(TestActivity.this, AlarmService.class);
intent.putExtra(AlarmService.LEASE_DETAIL_RESPONSE_LIST, Parcels.wrap(responses));
startService(intent);
并在AlarmService
中反序列化:
Parcels.unwrap(intent.getParcelableExtra(LEASE_DETAIL_RESPONSE_LIST));