FMUSER Wirless Video və Səsi Daha Asan ötürür!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Alban
ar.fmuser.org -> ərəb
hy.fmuser.org -> Ermənistan
az.fmuser.org -> azərbaycan dili
eu.fmuser.org -> Bask
be.fmuser.org -> Belarus
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalan
zh-CN.fmuser.org -> Çin (Sadələşdirilmiş)
zh-TW.fmuser.org -> Çin (Ənənəvi)
hr.fmuser.org -> Xorvat
cs.fmuser.org -> Çex dili
da.fmuser.org -> Danimarkalı
nl.fmuser.org -> Holland
et.fmuser.org -> Eston
tl.fmuser.org -> Filipin
fi.fmuser.org -> Fin
fr.fmuser.org -> Fransız
gl.fmuser.org -> Qalisian
ka.fmuser.org -> gürcü
de.fmuser.org -> Alman
el.fmuser.org -> Yunan
ht.fmuser.org -> Haiti Kreolu
iw.fmuser.org -> İbrani
hi.fmuser.org -> Hind dili
hu.fmuser.org -> Macar
is.fmuser.org -> İslandiya
id.fmuser.org -> İndoneziya
ga.fmuser.org -> İrlandiyalı
it.fmuser.org -> Italian
ja.fmuser.org -> Yapon
ko.fmuser.org -> Koreyalı
lv.fmuser.org -> Latviya
lt.fmuser.org -> Litva
mk.fmuser.org -> Makedoniya
ms.fmuser.org -> Malay dili
mt.fmuser.org -> Malta
no.fmuser.org -> Norveç
fa.fmuser.org -> Fars dili
pl.fmuser.org -> Polşa
pt.fmuser.org -> Portuqal
ro.fmuser.org -> Roman
ru.fmuser.org -> Rus
sr.fmuser.org -> Serb
sk.fmuser.org -> Slovak
sl.fmuser.org -> Sloveniya
es.fmuser.org -> İspan
sw.fmuser.org -> suahili
sv.fmuser.org -> İsveç
th.fmuser.org -> Thai
tr.fmuser.org -> Türkcə
uk.fmuser.org -> Ukrayna
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Uels
yi.fmuser.org -> Azərbaycan
Yayım iki fərqli növə bölünür: "Normal yayımlar" və "Sifarişli yayımlar". Adi yayım tamamilə asenkrondur və bütün yayım alıcıları tərəfindən eyni vaxtda qəbul edilə bilər (məntiqi olaraq). Mesajın ötürülməsinin səmərəliliyi nisbətən yüksəkdir, lakin çatışmazlığı alıcının işləmə nəticəsini növbəti qəbulediciyə ötürə bilməməsi və ləğv edilməməsidir. Yayım Niyyətinin yayılması; Bununla birlikdə, sifariş verilmiş yayım alıcı tərəfindən elan edilmiş prioritetə əsaslanır (android-də elan olunur: niyyət filtri elementinin üstünlük xüsusiyyəti, sayı nə qədər çox olarsa, prioritet o qədər yüksəkdir, dəyər aralığı: -1000 ilə 1000 arasındadır. mümkündür SetPriority () təyin etmək üçün IntentFilter obyektinin) və alıcı yayını növbə ilə alır. Məsələn, A səviyyə B-dən, B səviyyə C-dən yüksəkdirsə, yayım əvvəlcə A-ya, sonra B-yə və nəhayət C-yə ötürülür. məlumatları yayımda saxlaya bilər. Yayım B-yə göndərildikdə, B A tərəfindən saxlanan məlumatları yayımdan əldə edə bilər.
Context.sendBroadcast ()
Göndərilənlər adi bir yayımdır və bütün abunəçilər onu əldə etmək və işləmək imkanı əldə edirlər.
Context.sendOrderedBroadcast ()
Göndərmə sifarişli bir yayımdır. Sistem alıcıların elan etdiyi prioritetə uyğun olaraq alıcıları bir-bir icra edəcəkdir. Əvvəlki qəbuledicinin yayımı dayandırmaq hüququ var (BroadcastReceiver.abortBroadcast ()). Yayım əvvəlki qəbuledici tərəfindən dayandırılsa, sonuncusu Alıcı artıq yayını ala bilməz. Sifariş verilmiş yayım üçün əvvəlki alıcı işləmə nəticəsini yayım Niyyətində saxlaya bilər və sonra növbəti qəbulediciyə ötürə bilər.
Yayım alıcısı (BroadcastReceiver) yayım niyyətini almaq üçün istifadə olunur və yayım niyyətinin göndərilməsi Context.sendBroadcast () və Context.sendOrderedBroadcast () zəngləri ilə həyata keçirilir. Ümumiyyətlə bir yayım niyyəti bu niyyətə abunə olan bir çox yayım alıcısı tərəfindən qəbul edilə bilər. Bu xüsusiyyət JMS-də Mövzu mesajı qəbuledicilərinə bənzəyir. Yayım qəbuledicisi metodunu tətbiq etmək aşağıdakı kimidir:
İlk addım: yayım alıcısını təyin edin, BroadcastReceiver-i miras edin və onReceive () metodunu yenidən yazın.
ümumi sinif IncomingSMSReceiver genişlənirBroadcastReceiver {
@Override public void onReceive (Kontekst, Məqsəd) {
}
}
Addım 2: Yayına abunə olun, maraq niyyəti, iki abunə üsulu var:
Birinci növ: abunə olmaq üçün koddan istifadə edin (dinamik abunə)
IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver qəbuledicisi = newIncomingSMSReceiver ();
registerReceiver (alıcı, filtr);
İkinci növ: Abunə olun AndroidManifest.xml sənədindəki qovşaq (statik abunə)
Dinamik yayım abunəliyi ilə statik yayım abunəliyi arasındakı fərqə nəzər salaq:
Statik abunə yayımına da deyilir: rezident yayım. Müraciətiniz bağlandıqda, bir yayım mesajı varsa, yazdığınız yayım alıcısı da ala bilər. Qeydiyyat üsulu tətbiqinizdə AndroidManifastdır. .xml abunə üçün.
Dinamik abunə yayımına da deyilir: qeyri-rezident yayım. Tətbiq bitdikdə yayım təbii olaraq yox olacaq. Məsələn, onCreate və ya onResume fəaliyyətində yayımlanmaya abunə olmusunuz və onDestory ya da onPause-da yayım abunəliyinizi ləğv etməlisiniz. Əks təqdirdə, bir istisna bildiriləcək, beləliklə yayım alıcınız qeyri-rezident olacaq.
Burada iki abunə üsulu olan daha bir detal var. Yayımları göndərərkən aşağıdakılara diqqət yetirməlisiniz: Dinamik qeydiyyat üçün örtük niyyət metodu istifadə olunur, buna görə də yayım göndərərkən göndərmək üçün gizli niyyət istifadə etməlisiniz. Əks təqdirdə, yayım alıcısı yayımı qəbul edə bilməyəcəkdir. Bu məqama diqqət yetirin. Ancaq statik olaraq abunə olduqda, AndroidMainfest.xml-də abunə olduğu üçün, yayım göndərərkən ekran niyyəti və örtük niyyətindən istifadə etmək mümkündür (əlbətdə bu yalnız özümüzün müəyyənləşdirdiyimiz yayım alıcıları üçündür), buna görə hər halda, örtük istifadə edirik Yayım göndərmək niyyəti var.
Bir nümunəyə baxaq:
Layihə quruluşuna nəzər yetirin:
Statik abunə yayımına nəzər yetirin:
paketi com.broadcast.demo;
idxal android.app.Activity;
idxal android.content.Intent;
idxal android.os.Bundle;
idxal android.view.View;
idxal android.view.View.OnClickListener;
idxal android.widget.Button;
idxal com.example.androidbroadcastdemo.R;
/ **
* Statik abunə yayımı
* @Müəllif weijiang204321
*
*/
ictimai sinif StaticRegisterBroadcastActivity Fəaliyyəti genişləndirir {
@Oride
qorunan boşluq onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Düymə btn = (Düymə) findViewById (R.id.btn);
Kənar
btn.setOnClickListener (yeni OnClickListener () {
@Oride
ictimai boşluq onClick (V-yə baxın) {
// Yayımı qeyd etmək üçün statik bir yol istifadə edin, yayımı göndərmək üçün ekran niyyətindən istifadə edə bilərsiniz
Niyyət yayımı = yeni Niyyət ("com.broadcast.set.broadcast");
sendBroadcast (yayım, boş);
}
Kənar
});
}
Kənar
}
AndroidMainfest.xml-də abunə olun:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
pack = "com.example.androidbroadcastdemo"
Android: versionCode = "1"
android: versionName = "1.0">
<uses-sdk
Android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<tətbiq
Android: allowBackup = "doğru"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<fəaliyyət
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Digər məzmundan hələlik narahat olmayın, daha sonra danışacağımız üçün burada yalnız statik yayımların qeydiyyatı üzərində dayanırıq
Yayının alıcısına nəzər salaq:
paket com.broadcast.receiver;
idxal android.content.BroadcastReceiver;
idxal android.content.Context;
idxal android.content.Intent;
idxal android.util.Log;
/ **
* Yayım alıcısı
* @Müəllif weijiang204321
*
*/
ümumi sinif UnSortBroadcastReceiver genişləndirir BroadcastReceiver {
@Oride
public void onReceive (Kontekst konteksti, Niyyət niyyəti) {
Log.e ("Intent_Action:", purpose.getAction () + "");
}
}
Yayım qəbuledicisindəki onReceive metodundakı məntiq çox sadədir, yəni Fəaliyyətin məzmununu çap etməkdir.
Proqramı çalıştırın, nəticə çox sadədir, burada şəkil deyil.
Gəlin dinamik abunəçilərə nəzər salaq:
paketi com.broadcast.demo;
idxal android.app.Activity;
idxal android.content.Intent;
idxal android.content.IntentFilter;
idxal android.os.Bundle;
idxal android.view.View;
idxal android.view.View.OnClickListener;
idxal android.widget.Button;
idxal com.broadcast.receiver.UnSortBroadcastReceiver;
idxal com.example.androidbroadcastdemo.R;
/ **
* Yayımı qeyd etmək üçün dinamik bir şəkildə istifadə edin
* @Müəllif weijiang204321
*
*/
ümumi sinif DynamicRegisterBroadcastActivity Fəaliyyəti genişləndirir {
Kənar
public static final String NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
qorunan UnSortBroadcastReceiver alıcısı;
Kənar
@Oride
qorunan boşluq onCreate (Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
setContentView (R.layout.activity_main);
Düymə btn0 = (Düymə) findViewById (R.id.btn);
btn0.setOnClickListener (yeni OnClickListener () {
ictimai boşluq onClick (V-yə baxın) {
// Yayım göndərin
Niyyət = yeni Niyyət (NEW_LIFEFORM_DETECTED);
sendBroadcast (it);
}
});
}
@Oride
qorunan boşluq onResume () {
super.onResume ();
// Yayım üçün qeydiyyatdan keçin
IntentFilter counterActionFilter = yeni IntentFilter (NEW_LIFEFORM_DETECTED);
alıcı = yeni UnSortBroadcastReceiver ();
registerReceiver (qəbuledici, counterActionFilter);
}
@Oride
qorunan boşluq onPause () {
super.onPause ();
// Yayımı ləğv edin
qeydiyyatdan keçməReceiver (alıcı);
}
}
Burada onResume-də yayımlanmağa, onPause-da yayımlanmaya abunə oluruq.
Başladığı Fəaliyyəti AndroidMainfest.xml-də DynamicRegisterBroadcastActivity olaraq dəyişdirin. Digər məzmunun dəyişdirilməsinə ehtiyac yoxdur. Proqramı çalıştırın və nəticəni yazdırın çox sadədir, buna görə şəkli burada görməyəcəyəm.
Sifarişli yayım və qaydasız yayımlara nəzər salaq
Bunu əvvəldə də qeyd etmişdik, gəlin qaydasız yayımlara nəzər salaq:
Əvvəlcə iki yayım alıcısını təyin edirik:
İlk yayım alıcısı:
paket com.broadcast.receiver;
idxal android.content.BroadcastReceiver;
idxal android.content.Context;
idxal android.content.Intent;
idxal android.util.Log;
/ **
* Yayım alıcısı A
* @Müəllif weijiang204321
*
*/
ümumi sinif SortBroadcastReceiverA BroadcastReceiver-ı genişləndirir {
@Oride
public void onReceive (Kontekst konteksti, Niyyət niyyəti) {
Log.e ("Demo:", "yayım alıcısı A");
}
}
İkinci yayım alıcısı:
paket com.broadcast.receiver;
idxal android.content.BroadcastReceiver;
idxal android.content.Context;
idxal android.content.Intent;
idxal android.util.Log;
/ **
* Yayım alıcısı B
* @Müəllif weijiang204321
*
*/
ümumi sinif SortBroadcastReceiverB BroadcastReceiver-ı genişləndirir {
@Oride
public void onReceive (Kontekst konteksti, Niyyət niyyəti) {
Log.e ("Demo:", "Broadcast B");
}
Kənar
Kənar
}
AndroidMainfest.xml-də yayımlanmağa abunə olun
əməliyyat nəticəsi:
Çalışan nəticə bir az qəribədir. Niyə alıcı B öndə, A alıcı arxadadır? Səbəbi budur ki, AndroidMainfest.xml-də yayımlanmaya abunə olduğumuz zaman android: prioritet atribut dəyərini niyyət-filtrdə təyin etdik. Dəyər nə qədər böyükdürsə, prioritet o qədər yüksəkdir. , A alıcısının prioriteti 1000, A alıcısının prioriteti 999, buna görə B əvvəl yayını alır, sonra A qəbul edir, lakin B alıcısı ilə A alıcısı arasında heç bir əlaqə yoxdur və heç bir qarşılıqlı əlaqə ola bilməz, Bəli, bu sıradan çıxmış bir yayım və asinxron olduğu üçün B-də onReceiver metoduna kod əlavə edərək bir təcrübə edə bilərik:
abortBroadcast (); // Bu yayımın ötürülməsini dayandırın
əməliyyat nəticəsi:
Çağırış səhvini görə bilərik, yəni sifariş verilmiş yayımın yayımı dayandırmasına icazə verilmir. Əslində, sonlandırma faydasızdır, çünki A alıcısı yayını hələ də alır.
Sifarişli yayımlara nəzər salaq, kodun dəyişdirilməsi lazımdır:
Birincisi, bir yayım göndərərkən:
Niyyət yayımı = yeni Niyyət ("com.broadcast.set.broadcast");
sendOrderedBroadcast (yayım, boş);
Sonra B alıcısında yayımı dayandırmaq üçün bir metod əlavə edin:
abortBroadcast ();
Digər kodun dəyişdirilməsinə ehtiyac yoxdur, əməliyyat nəticəsi:
Yalnız B qəbuledicisi var, A alıcısı yayımı qəbul etmir, çünki B alıcısında yayım dayandırılır və sonrakı alıcılar qəbul edə bilmir.
Aşağıdakı kodu dəyişdirin:
Alıcı B:
paket com.broadcast.receiver;
idxal android.content.BroadcastReceiver;
idxal android.content.Context;
idxal android.content.Intent;
idxal android.os.Bundle;
idxal android.util.Log;
/ **
* Yayım alıcısı B
* @Müəllif weijiang204321
*
*/
ümumi sinif SortBroadcastReceiverB BroadcastReceiver-ı genişləndirir {
@Oride
public void onReceive (Kontekst konteksti, Niyyət niyyəti) {
Log.e ("Demo:", "yayım alıcısı B");
Bundle paketi = yeni Bundle ();
bundle.putString ("növbəti_ alıcı", "növbəti yayım alıcısı");
setResultExtras (paket);
}
Kənar
}
B yayımı aldıqdan sonra bir qədər dəyər saxlayır və növbəti alıcıya ötürür.
Alıcının A kodu:
paketi com.broadcast.receive
Bizim digər məhsul:
Professional FM Radio Stansiyası Avadanlıq Paketi
|
||
|
Sürpriz almaq üçün e-poçt daxil edin
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikaans
sq.fmuser.org -> Alban
ar.fmuser.org -> ərəb
hy.fmuser.org -> Ermənistan
az.fmuser.org -> azərbaycan dili
eu.fmuser.org -> Bask
be.fmuser.org -> Belarus
bg.fmuser.org -> Bulgarian
ca.fmuser.org -> Katalan
zh-CN.fmuser.org -> Çin (Sadələşdirilmiş)
zh-TW.fmuser.org -> Çin (Ənənəvi)
hr.fmuser.org -> Xorvat
cs.fmuser.org -> Çex dili
da.fmuser.org -> Danimarkalı
nl.fmuser.org -> Holland
et.fmuser.org -> Eston
tl.fmuser.org -> Filipin
fi.fmuser.org -> Fin
fr.fmuser.org -> Fransız
gl.fmuser.org -> Qalisian
ka.fmuser.org -> gürcü
de.fmuser.org -> Alman
el.fmuser.org -> Yunan
ht.fmuser.org -> Haiti Kreolu
iw.fmuser.org -> İbrani
hi.fmuser.org -> Hind dili
hu.fmuser.org -> Macar
is.fmuser.org -> İslandiya
id.fmuser.org -> İndoneziya
ga.fmuser.org -> İrlandiyalı
it.fmuser.org -> Italian
ja.fmuser.org -> Yapon
ko.fmuser.org -> Koreyalı
lv.fmuser.org -> Latviya
lt.fmuser.org -> Litva
mk.fmuser.org -> Makedoniya
ms.fmuser.org -> Malay dili
mt.fmuser.org -> Malta
no.fmuser.org -> Norveç
fa.fmuser.org -> Fars dili
pl.fmuser.org -> Polşa
pt.fmuser.org -> Portuqal
ro.fmuser.org -> Roman
ru.fmuser.org -> Rus
sr.fmuser.org -> Serb
sk.fmuser.org -> Slovak
sl.fmuser.org -> Sloveniya
es.fmuser.org -> İspan
sw.fmuser.org -> suahili
sv.fmuser.org -> İsveç
th.fmuser.org -> Thai
tr.fmuser.org -> Türkcə
uk.fmuser.org -> Ukrayna
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnamese
cy.fmuser.org -> Uels
yi.fmuser.org -> Azərbaycan
FMUSER Wirless Video və Səsi Daha Asan ötürür!
Əlaqə
Ünvan:
No. 305 Otaq HuiLan Bina No.273 Huanpu Yolu Guangzhou Çin 510620
Kateqoriyalar
Newsletter