Android Parcelable, Intent a Bundle
Jakože, máš:
Serializable
— Java-native věc, serializuje se zpravidla do pole bajtů.
Parcelable
— Android věc, serializuje se do Parcel
.
Parcel
— Serializovaná (custom) data. Víš classu toho parcelu (od API 33 asi), jinak dál to jsou prostě primitivní typy — int
, String
, …, a jejich pole.
Bundle
— Key-value úložiště. Obsahuje Parcely
, primitvní typy, …
Intent
— Obsahuje data jako Bundle
+ informace o tom, co spustit (servica, aktivita, …)
A máš Intent#getParcelable
. Do API 32 bere jeden argument (key). Od API 33 to je deprecated a bere navíc ještě classu, kterou od něj chceš.
IntentCompat.getParcelable(intent, key, classa)
je wrapper, který volí podle systému vhodnou variantu.
… a pro Bundle
ten wrapper není. qwq
… pak třeba ještě PendingIntent
, který předáš systému, jakože „spusť tuhle aktivitu/servicu/…“. Má flagy, jako „spusť jen jednou“ nebo „nejde měnit“.
Takže když děláš notifikaci nebo třeba alarm, můžeš k ní dát PendingIntent
s tím, jaká akce se má provést.