我使用自定义的Parcelable传递数据到BroadcastReceiver。具体步骤如下:
我注册intent并设置带有classloader的额外Parcelable,然后通过AlarmManager安排广播的执行。 当AlarmManager触发时,它查看我的Intent及其Parcel,但无法处理,因为它没有使用提供的classloader(似乎是这样)。 我认为当Intent.fillIn复制意图到新意图时会将classloader丢失 (请参见堆栈跟踪)。
我注册intent并设置带有classloader的额外Parcelable,然后通过AlarmManager安排广播的执行。 当AlarmManager触发时,它查看我的Intent及其Parcel,但无法处理,因为它没有使用提供的classloader(似乎是这样)。 我认为当Intent.fillIn复制意图到新意图时会将classloader丢失 (请参见堆栈跟踪)。
02-21 21:09:25.214: WARN/Intent(52): android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.company.project.MyParcelable
02-21 21:09:25.214: WARN/Intent(52): at android.os.Parcel.readParcelable(Parcel.java:1822)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Parcel.readValue(Parcel.java:1713)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Parcel.readMapInternal(Parcel.java:1947)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Bundle.unparcel(Bundle.java:169)
02-21 21:09:25.214: WARN/Intent(52): at android.os.Bundle.putAll(Bundle.java:242)
02-21 21:09:25.214: WARN/Intent(52): at android.content.Intent.fillIn(Intent.java:4530)
02-21 21:09:25.214: WARN/Intent(52): at com.android.server.am.PendingIntentRecord.send(PendingIntentRecord.java:185)
02-21 21:09:25.214: WARN/Intent(52): at android.app.PendingIntent.send(PendingIntent.java:400)
02-21 21:09:25.214: WARN/Intent(52): at com.android.server.AlarmManagerService$AlarmThread.run(AlarmManagerService.java:636)
那么有没有解决这个问题的方法?任何帮助都将不胜感激。
谢谢。