Android Parcelable, Intent a Bundle: Difference between revisions
No edit summary |
formatting |
||
Line 1: | Line 1: | ||
Jakože, máš: | Jakože, máš: | ||
Serializable — Java-native věc, serializuje se zpravidla do pole bajtů. | <code>Serializable</code> — Java-native věc, serializuje se zpravidla do pole bajtů. | ||
Parcelable — Android věc, serializuje se do Parcel. | <code>Parcelable</code> — Android věc, serializuje se do <code>Parcel</code>. | ||
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. | <code>Parcel</code> — Serializovaná (custom) data. Víš classu toho parcelu (od API 33 asi), jinak dál to jsou prostě primitivní typy — <code>int</code>, <code>String</code>, …, a jejich pole. | ||
Bundle — Key-value úložiště. Obsahuje Parcely, primitvní typy, … | <code>Bundle</code> — Key-value úložiště. Obsahuje <code>Parcely</code>, primitvní typy, … | ||
Intent — Obsahuje data jako Bundle + informace o tom, co spustit (servica, aktivita, …) | <code>Intent</code> — Obsahuje data jako <code>Bundle</code> + 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š. | A máš <code>Intent#getParcelable</code>. 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. | <code>IntentCompat.getParcelable(intent, key, classa)</code> je wrapper, který volí podle systému vhodnou variantu. | ||
… a pro Bundle ten wrapper není. | … a pro <code>Bundle</code> 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“. | … pak třeba ještě <code>PendingIntent</code>, 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. | Takže když děláš notifikaci nebo třeba alarm, můžeš k ní dát <code>PendingIntent</code> s tím, jaká akce se má provést. | ||
{{Page lang|cs}} | {{Page lang|cs}} | ||
[[Category:Android]] | [[Category:Android]] | ||
[[Category:Notes]] | [[Category:Notes]] |
Revision as of 15:42, 31 January 2025
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.