Adding the linked issue on tracker: https://code.google.com/p/android/issues/detail?id=216581&thanks=216581&ts=1468962325
So I installed the DP5 Android 7.0 rele
I have seen this sort of behavior reported before, with custom Parcelable
objects and system services (e.g., NotificationManager
). What seems to happen is that the system tries using the PendingIntent
, and as part of that for some reason it tries to un-Parcel
the Parcelable
. This fails, because the system doesn't have your classes. I haven't heard of somebody running into this in a while, but it's entirely possible that there is a regression in Android N that re-introduced it.
You might rummage through LogCat to see if there are any messages — or, better yet, stack traces — from the system (not your app) that seem to pertain to your alarm event.
If you can create a reproducible test case, file an issue on the Android issue tracker. If you think of it, post a link to it here, as I'd like to take a peek at it.
In terms of workarounds, I can think of two:
Don't put the Parcelable
in there. Instead, put an ID that you can use to look up the information as needed, whether from an in-memory cache (if your process happens to still be around) or from whatever your persistent data store is.
Switch from Parcelable
to what I and others have termed "bundle-able", where you convert your object to and from a Bundle
. Basically, stick solely to OS-defined classes, with no custom classes. Then, the system can safely de-Parcel
the Bundle
(for whatever reason it does so). This, of course, is much more painful than simply using an annotation processor to create the Parcelable
implementation.