Нативная разработка мобильных приложений


Передача сообщений подписчикам



Download 3,69 Mb.
Pdf ko'rish
bet65/228
Sana21.07.2022
Hajmi3,69 Mb.
#834838
1   ...   61   62   63   64   65   66   67   68   ...   228
Bog'liq
Нативная разработка мобильных приложений

Передача сообщений подписчикам, 
заинтересованным в их получении
Менее известный API, характерный для Android и недоступный за пределами 
этой платформы, – 
LocalBroadcastManager
. Давайте рассмотрим его.
LocalBroadcastManager
– это синглтон, единственный экземпляр, существую
-
щий и используемый в приложении. Доступ к этому экземпляру можно полу
-
чить, передав любой объект 
Context
в вызов статического метода 
getInstance

Lo­
calBroadcastManager
lbm
=
LocalBroadcastManager.getInstance(contex
t);
. Вам никогда 
не придется беспокоиться о вызове конструктора или настройке. Кроме того, 
он изначально является потокобезопасным!
Самая замечательная особенность этого синглтона заключается в возмож
-
ности использовать его для передачи сообщений между объектами, ничего не 


96

Передача сообщений
знающими друг о друге. Например, с его помощью можно рассылать сообще
-
ния из класса 
Adapter
, управляющего несколькими разными 
RecyclerView
, не за
-
ботясь о том, что произойдет при получении этих сообщений. Одно представ
-
ление списка может обновить свой список в ответ на сообщение конкретного 
типа; другое – отреагировать как-то иначе, может быть, даже вызвать 
finish
своего 
Ac ti vi ty
. Экземпляру 
Adapter
не нужно знать о существовании экземпля
-
ров 
RecyclerView
или 
Ac ti vi ty
, в которых они размещены, и наоборот – 
Local­
BroadcastManager
посылает сигнал, а любая заинтересованная сторона сможет 
отреагировать на него по вашему выбору.
Экземпляр 
LocalBroadcastManager
имеет два метода, используемых особенно 
часто: 
sendBroadcast
и 
registerReceiver
. Как вы уже наверняка догадались, 
send­
Broadcast
посылает сообщение и уведомляет любые другие классы, зарегистри
-
ровавшиеся как получатели сообщений этого типа. Также важную роль играет 
метод 
unregisterReceiver
, позволяющий прекратить прием сообщений, если по
-
лучатель был удален из приложения (и тем самым предотвратить утечки па
-
мяти!).
Сообщениями в данном случае являются экземпляры класса 
Intent
, того же 
класса, который используется для запуска новых экземпляров 
Ac ti vi ty
и опи
-
сания общесистемных сообщений. Экземпляр 
Intent
имеет свойство, описы
-
вающее «действие», которое можно инициализировать строкой. Также есть 
возможность добавить дополнительные действия позже с помощью метода 
addAction
.
Синглтон 
LocalBroadastManager
позволяет послать сообщение 
Intent
, предла
-
гая для этого метод 
sendBroadcast
:
Java
Intent intent = new Intent("data-received");
LocalBroadcastManager.getInstance(context).sendBroadcast(intent);
Kotlin
val intent = Intent("data­received")
LocalBroadcastManager.getInstance(context).sendBroadcast(intent)
После вызова этого метода для всех экземпляров 
BroadcastReceiver
, зарегист-
рировавшихся в том же глобальном экземпляре 
LocalBroadcastManager
в качестве 
получателей этого действия, будет вызван метод 
onReceive
с соответствующим 
экземпляром 
Intent
во втором аргументе. Обратите внимание, что уведом
-
ляться будут только экземпляры 
BroadcastReceiver
, зарегистрировавшиеся с по
-
мощью 
IntentFilter
, включающего действие, соответствующее действию в эк
-
земпляре 
Intent
. То есть если в предыдущем примере послать 
Intent
с другим 
действием, например 
Intent
intent
=
new
Intent("userlogin")
,
BroadcastReceiver
не получит сообщения, потому что действия в его фильтре 
IntentFilter
и в со
-
общении 
intent
не совпадают.

Download 3,69 Mb.

Do'stlaringiz bilan baham:
1   ...   61   62   63   64   65   66   67   68   ...   228




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish