Natrafiłem na ten termin w dokumentacji Androida wraz z towarzyszącą definicją
Są to transmisje, których dane są przechowywane przez system po zakończeniu, dzięki czemu klienci mogą szybko odzyskać te dane bez konieczności czekania na następną transmisję.
Co to znaczy? Czy ktoś może rozwinąć jego użycie na konkretnym przykładzie? Uważam, że musimy poprosić o pozwolenie na wykorzystanie tego zamiaru? Dlaczego tak?
<uses-permission android:name="android.permission.BROADCAST_STICKY"/> - Allows an application to broadcast sticky intents.
android
android-intent
Shouvik
źródło
źródło
Sticky broadcasts should not be used. They provide no security (anyone can access them), no protection (anyone can modify them), and many other problems. The recommended pattern is to use a non-sticky broadcast to report that something has changed, with another mechanism for apps to retrieve the current value whenever desired.
Odpowiedzi:
Jeśli działanie wywołuje
onPause
normalną transmisję, można przegapić odebranie transmisji. Przyklejoną transmisję można sprawdzić po jej zainicjowaniu wonResume
.Aktualizacja 23.06.2020
Przyklejone transmisje są przestarzałe.
Zobacz
sendStickyBroadcast
dokumentację .Wprowadzić w życie
Intent intent = new Intent("some.custom.action"); intent.putExtra("some_boolean", true); sendStickyBroadcast(intent);
Zasoby
Powiązany post: Jaka jest różnica między sendStickyBroadcast i sendBroadcast w systemie Android?
Zobacz
removeStickyBroadcast(Intent)
i na poziomie API 5 +,isInitialStickyBroadcast()
do użycia w odbiornikuonReceive
.źródło
sendStickyBroadcast()
wykonujesendBroadcast(Intent)
tzw. sticky, tj. intencja, którą wysyłasz, pozostaje w pobliżu po zakończeniu transmisji, dzięki czemu inni mogą szybko odzyskać te dane poprzez wartość zwracaną przezregisterReceiver(BroadcastReceiver, IntentFilter)
. Pod każdym innym względem zachowuje się tak samo jaksendBroadcast(Intent)
. Jednym z przykładów przyklejonej transmisji wysyłanej przez system operacyjny jestACTION_BATTERY_CHANGED
. Kiedy wywołujeszregisterReceiver()
tę akcję - nawet z wartością nullBroadcastReceiver
- otrzymasz intencję, która była ostatnio transmitowana dla tej akcji. Dlatego można go użyć do znalezienia stanu baterii bez konieczności rejestrowania wszystkich przyszłych zmian stanu baterii.źródło
Wartość trwałej transmisji to wartość, która była ostatnio transmitowana i jest obecnie przechowywana w lepkiej pamięci podręcznej. To nie jest wartość transmisji, która została teraz odebrana. Przypuszczam, że można powiedzieć, że jest to plik cookie przeglądarki, do którego można uzyskać dostęp w dowolnym momencie. Sticky broadcast jest teraz przestarzałe, zgodnie z dokumentacją dla metod sticky broadcast ( np. ):
źródło
Normalna intencja emisji nie jest już dostępna po wysłaniu i przetworzeniu przez system. Jeśli używasz metody sendStickyBroadcast (Intent), intencja jest lepka, co oznacza, że wysyłana intencja pozostaje w pobliżu po zakończeniu emisji.
odsyłasz do mojego bloga: tutaj wprowadź opis linku
źródło