FMUSER Wirless Mengirim Video Dan Audio Lebih Mudah!
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikans
sq.fmuser.org -> Albania
ar.fmuser.org -> Arab
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Belarusia
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Cina (Sederhana)
zh-TW.fmuser.org -> Mandarin (Tradisional)
hr.fmuser.org -> Kroasia
cs.fmuser.org -> Ceko
da.fmuser.org -> Denmark
nl.fmuser.org -> Belanda
et.fmuser.org -> Estonia
tl.fmuser.org -> Filipina
fi.fmuser.org -> Finlandia
fr.fmuser.org -> Perancis
gl.fmuser.org -> Galicia
ka.fmuser.org -> Georgia
de.fmuser.org -> Jerman
el.fmuser.org -> Yunani
ht.fmuser.org -> Kreol Haiti
iw.fmuser.org -> Ibrani
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hongaria
is.fmuser.org -> Islandia
id.fmuser.org -> Bahasa Indonesia
ga.fmuser.org -> Irlandia
it.fmuser.org -> Italia
ja.fmuser.org -> Jepang
ko.fmuser.org -> Korea
lv.fmuser.org -> Latvia
lt.fmuser.org -> Lithuania
mk.fmuser.org -> Makedonia
ms.fmuser.org -> Melayu
mt.fmuser.org -> Malta
no.fmuser.org -> Norwegia
fa.fmuser.org -> Persia
pl.fmuser.org -> Polandia
pt.fmuser.org -> Portugis
ro.fmuser.org -> Rumania
ru.fmuser.org -> Rusia
sr.fmuser.org -> Serbia
sk.fmuser.org -> Slowakia
sl.fmuser.org -> Slovenia
es.fmuser.org -> Spanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Swedia
th.fmuser.org -> Thailand
tr.fmuser.org -> Turki
uk.fmuser.org -> Ukraina
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> Welsh
yi.fmuser.org -> Yiddish
Penyiaran dibagi menjadi dua jenis: "Siaran normal" dan "Siaran berurutan". Siaran biasa sepenuhnya tidak sinkron dan dapat diterima oleh semua penerima siaran pada waktu yang sama (secara logis). Efisiensi pengiriman pesan relatif tinggi, namun kekurangannya adalah penerima tidak dapat meneruskan hasil pemrosesan ke penerima berikutnya, dan tidak dapat diakhiri. Penyebaran Maksud Siaran; namun, siaran terurut didasarkan pada prioritas yang dideklarasikan oleh penerima (dideklarasikan dalam atribut android: priority dari elemen filter maksud, semakin besar angkanya, semakin tinggi prioritasnya, rentang nilainya: -1000 hingga 1000. Begitu juga kemungkinan Panggil setPriority () dari objek IntentFilter yang akan disetel), dan penerima menerima siaran secara bergantian. Misalnya, jika level A lebih tinggi dari level B, dan level B lebih tinggi dari C, maka siaran tersebut pertama-tama ditransmisikan ke A, lalu ke B, dan terakhir ke C. Setelah A mendapatkan siaran, itu dapat menyimpan data dalam siaran. Ketika siaran dikirim ke B, B bisa mendapatkan data yang disimpan oleh A dari siaran.
Context.sendBroadcast ()
Yang dikirim adalah siaran biasa, dan semua pelanggan memiliki kesempatan untuk memperoleh dan memprosesnya.
Context.sendOrderedBroadcast ()
Mengirim adalah siaran yang teratur. Sistem akan mengeksekusi penerima satu per satu sesuai dengan prioritas yang dideklarasikan oleh penerima. Penerima sebelumnya memiliki hak untuk menghentikan siaran (BroadcastReceiver.abortBroadcast ()). Jika siaran dihentikan oleh penerima sebelumnya, penerima sebelumnya tidak bisa lagi menerima siaran. Untuk siaran yang dipesan, penerima sebelumnya bisa menyimpan hasil pemrosesan di Maksud siaran, lalu meneruskannya ke penerima berikutnya.
Penerima siaran (BroadcastReceiver) digunakan untuk menerima Maksud siaran, dan pengiriman Maksud siaran direalisasikan dengan memanggil Context.sendBroadcast () dan Context.sendOrderedBroadcast (). Biasanya Intent siaran dapat diterima oleh beberapa penerima siaran yang berlangganan Intent ini. Fitur ini mirip dengan penerima pesan Topik di JMS. Untuk mengimplementasikan metode penerima siaran adalah sebagai berikut:
Langkah pertama: tentukan penerima siaran, warisi BroadcastReceiver, dan tulis ulang metode onReceive ().
kelas publik IncomingSMSReceiver extendsBroadcastReceiver {
@Override public void onReceive (Contextcontext, Intentintent) {
}
}
Langkah 2: Berlangganan siaran Maksud minat, ada dua metode berlangganan:
Jenis pertama: gunakan kode untuk berlangganan (langganan dinamis)
IntentFilter filter = newIntentFilter ("android.provider.Telephony.SMS_RECEIVED");
Penerima IncomingSMSReceiver = newIncomingSMSReceiver ();
registerReceiver (penerima, filter);
Jenis kedua: Berlangganan di node di file AndroidManifest.xml (langganan statis)
Mari kita lihat perbedaan antara langganan siaran dinamis dan langganan siaran statis:
Siaran langganan statis juga disebut: siaran residen. Saat aplikasi Anda ditutup, jika ada pesan siaran, penerima siaran yang Anda tulis juga bisa menerimanya. Metode pendaftarannya adalah AndroidManifast di aplikasi Anda. .xml untuk berlangganan.
Siaran langganan dinamis juga disebut: siaran non-residen. Saat aplikasi berakhir, siaran secara alami akan hilang. Misalnya, Anda berlangganan siaran di onCreate atau onResume dalam aktivitas, dan Anda harus membatalkan langganan siaran di onDestory atau onPause. Jika tidak, pengecualian akan dilaporkan, jadi penerima siaran Anda adalah non-residen.
Ada satu detail lagi di sini, yaitu dua metode berlangganan. Saat mengirim siaran, Anda perlu memperhatikan: Metode maksud implisit digunakan untuk pendaftaran dinamis, jadi Anda perlu menggunakan maksud implisit untuk dikirim saat mengirim siaran. , Jika tidak, penerima siaran tidak akan dapat menerima siaran tersebut. Perhatikan poin ini. Tetapi saat berlangganan secara statis, karena berlangganan di AndroidMainfest.xml, dimungkinkan untuk menggunakan maksud tampilan dan maksud implisit saat mengirim siaran (tentu saja ini hanya untuk penerima siaran yang ditentukan sendiri), jadi untuk berjaga-jaga, kami biasanya menggunakan implisit Bermaksud mengirim siaran.
Mari kita lihat contohnya:
Lihat struktur proyek:
Lihat siaran langganan statis:
paket com.broadcast.demo;
impor android.app.Activity;
impor android.content.Intent;
impor android.os.Bundle;
impor android.view.View;
impor android.view.View.OnClickListener;
impor android.widget.Button;
impor com.example.androidbroadcastdemo.R;
/ **
* Siaran langganan statis
* @ penulis weijiang204321
*
*/
public class StaticRegisterBroadcastActivity memperluas Aktivitas {
@Mengesampingkan
void terlindungi onCreate (Bundle disimpanInstanceState) {
super.onCreate (storedInstanceState);
setContentView (R.layout.activity_main);
Tombol btn = (Tombol) findViewById (R.id.btn);
Untuk
btn.setOnClickListener (OnClickListener baru () {
@Mengesampingkan
public void onClick (Lihat v) {
// Gunakan cara statis untuk mendaftarkan siaran, Anda bisa menggunakan maksud tampilan untuk mengirim siaran
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendBroadcast (siaran, null);
}
Untuk
});
}
Untuk
}
Berlangganan di AndroidMainfest.xml:
<manifestasi xmlns:android="http://schemas.android.com/apk/res/android"
package = "com.example.androidbroadcastdemo"
android: versionCode = "1"
android: versionName = "1.0">
<menggunakan-sdk
android: minSdkVersion = "8"
android: targetSdkVersion = "18" />
<aplikasi
android: allowBackup = "true"
android: icon = "@ drawable / ic_launcher"
android: label = "@ string / app_name"
android: theme = "@ style / AppTheme">
<aktivitas
android: name = "com.broadcast.demo.StaticRegisterBroadcastActivity"
android: label = "@ string / app_name">
Jangan khawatir dengan konten lain untuk saat ini, seperti yang akan kita bicarakan nanti, di sini kita hanya fokus pada pendaftaran siaran statis
Mari kita lihat penerima siaran:
paket com.broadcast.receiver;
impor android.content.BroadcastReceiver;
impor android.content.Context;
impor android.content.Intent;
impor android.util.Log;
/ **
* Penerima siaran
* @ penulis weijiang204321
*
*/
public class UnSortBroadcastReceiver memperluas BroadcastReceiver {
@Mengesampingkan
public void onReceive (Konteks konteks, Maksud maksud) {
Log.e ("Intent_Action:", intent.getAction () + "");
}
}
Logika dalam metode onReceive di penerima siaran sangat sederhana, yaitu mencetak konten Action.
Jalankan programnya, hasilnya sangat sederhana, disini bukan gambarnya.
Mari kita lihat langganan dinamis:
paket com.broadcast.demo;
impor android.app.Activity;
impor android.content.Intent;
impor android.content.IntentFilter;
impor android.os.Bundle;
impor android.view.View;
impor android.view.View.OnClickListener;
impor android.widget.Button;
impor com.broadcast.receiver.UnSortBroadcastReceiver;
impor com.example.androidbroadcastdemo.R;
/ **
* Gunakan cara dinamis untuk mendaftarkan siaran
* @ penulis weijiang204321
*
*/
public class DynamicRegisterBroadcastActivity memperluas Aktivitas {
Untuk
String public static final NEW_LIFEFORM_DETECTED = "com.dxz.broadcasttest.NEW_LIFEFORM";
penerima UnSortBroadcastReceiver yang dilindungi;
Untuk
@Mengesampingkan
void terlindungi onCreate (Bundle disimpanInstanceState) {
super.onCreate (storedInstanceState);
setContentView (R.layout.activity_main);
Tombol btn0 = (Tombol) findViewById (R.id.btn);
btn0.setOnClickListener (OnClickListener baru () {
public void onClick (Lihat v) {
// Kirim siaran
Maksud itu = Maksud baru (NEW_LIFEFORM_DETECTED);
sendBroadcast (itu);
}
});
}
@Mengesampingkan
void dilindungi onResume () {
super.onResume ();
// Daftar untuk siaran
IntentFilter counterActionFilter = IntentFilter baru (NEW_LIFEFORM_DETECTED);
receiver = new UnSortBroadcastReceiver ();
registerReceiver (receiver, counterActionFilter);
}
@Mengesampingkan
void terlindungi onPause () {
super.onPause ();
// Batalkan siaran
unregisterReceiver (receiver);
}
}
Di sini kita berlangganan penyiaran di onResume, dan berhenti berlangganan penyiaran di onPause.
Ubah Aktivitas yang diluncurkan menjadi DynamicRegisterBroadcastActivity di AndroidMainfest.xml. Konten lainnya tidak perlu dimodifikasi. Jalankan programnya dan print hasilnya sangat sederhana, jadi saya tidak akan melihat gambarnya di sini.
Mari kita lihat siaran berurutan dan siaran tidak berurutan
Kami telah menyebutkan ini di awal, mari kita lihat penyiaran yang tidak teratur:
Pertama kami mendefinisikan dua penerima siaran:
Penerima siaran pertama:
paket com.broadcast.receiver;
impor android.content.BroadcastReceiver;
impor android.content.Context;
impor android.content.Intent;
impor android.util.Log;
/ **
* Penerima siaran A
* @ penulis weijiang204321
*
*/
public class SortBroadcastReceiverA memperluas BroadcastReceiver {
@Mengesampingkan
public void onReceive (Konteks konteks, Maksud maksud) {
Log.e ("Demo:", "penerima siaran A");
}
}
Penerima siaran kedua:
paket com.broadcast.receiver;
impor android.content.BroadcastReceiver;
impor android.content.Context;
impor android.content.Intent;
impor android.util.Log;
/ **
* Penerima siaran B
* @ penulis weijiang204321
*
*/
public class SortBroadcastReceiverB memperluas BroadcastReceiver {
@Mengesampingkan
public void onReceive (Konteks konteks, Maksud maksud) {
Log.e ("Demo:", "Broadcast B");
}
Untuk
Untuk
}
Berlangganan siaran di AndroidMainfest.xml
hasil operasi:
Hasil lari agak aneh. Mengapa penerima B di depan dan penerima A di belakang? Alasannya adalah saat kita berlangganan siaran di AndroidMainfest.xml, kita menyetel nilai atribut android: priority di maksud-filter. Semakin besar nilainya, semakin tinggi prioritasnya. , Prioritas penerima B adalah 1000, prioritas penerima A adalah 999, jadi B menerima siaran terlebih dahulu, lalu A menerimanya, tetapi tidak ada sambungan antara penerima B dan penerima A, dan tidak ada interaksi Ya, karena ini adalah siaran tidak teratur dan asinkron, kita dapat melakukan eksperimen dengan menambahkan kode ke metode onReceiver di B:
abortBroadcast (); // Hentikan transmisi siaran ini
hasil operasi:
Kita dapat melihat kesalahan prompt, yaitu siaran yang tidak dipesan tidak diizinkan untuk menghentikan siaran. Faktanya, penghentian tidak ada gunanya, karena penerima A masih menerima siaran.
Mari kita lihat penyiaran yang teratur, kodenya perlu diubah:
Yang pertama adalah saat mengirim siaran:
Intent broadcast = new Intent ("com.broadcast.set.broadcast");
sendOrderedBroadcast (broadcast, null);
Kemudian tambahkan metode untuk menghentikan siaran di penerima B:
abortBroadcast ();
Kode lain tidak perlu diubah, hasil operasinya:
Yang ada hanya penerima B, penerima A tidak menerima siaran, karena siaran dihentikan di penerima B, dan penerima berikutnya tidak dapat menerimanya.
Ubah kode di bawah ini:
Penerima B:
paket com.broadcast.receiver;
impor android.content.BroadcastReceiver;
impor android.content.Context;
impor android.content.Intent;
impor android.os.Bundle;
impor android.util.Log;
/ **
* Penerima siaran B
* @ penulis weijiang204321
*
*/
public class SortBroadcastReceiverB memperluas BroadcastReceiver {
@Mengesampingkan
public void onReceive (Konteks konteks, Maksud maksud) {
Log.e ("Demo:", "penerima siaran B");
Bundel bundel = Bundel baru ();
bundle.putString ("next_receiver", "penerima siaran berikutnya");
setResultExtras (bundle);
}
Untuk
}
Setelah B menerima siaran, ia menyimpan beberapa nilai dan meneruskannya ke penerima berikutnya.
Kode penerima A:
paket com.broadcast.receive
produk kami yang lain:
Paket Peralatan Stasiun Radio FM Profesional
|
||
|
Masukkan email untuk mendapatkan kejutan
es.fmuser.org
it.fmuser.org
fr.fmuser.org
de.fmuser.org
af.fmuser.org -> Afrikans
sq.fmuser.org -> Albania
ar.fmuser.org -> Arab
hy.fmuser.org -> Armenia
az.fmuser.org -> Azerbaijan
eu.fmuser.org -> Basque
be.fmuser.org -> Belarusia
bg.fmuser.org -> Bulgaria
ca.fmuser.org -> Catalan
zh-CN.fmuser.org -> Cina (Sederhana)
zh-TW.fmuser.org -> Mandarin (Tradisional)
hr.fmuser.org -> Kroasia
cs.fmuser.org -> Ceko
da.fmuser.org -> Denmark
nl.fmuser.org -> Belanda
et.fmuser.org -> Estonia
tl.fmuser.org -> Filipina
fi.fmuser.org -> Finlandia
fr.fmuser.org -> Perancis
gl.fmuser.org -> Galicia
ka.fmuser.org -> Georgia
de.fmuser.org -> Jerman
el.fmuser.org -> Yunani
ht.fmuser.org -> Kreol Haiti
iw.fmuser.org -> Ibrani
hi.fmuser.org -> Hindi
hu.fmuser.org -> Hongaria
is.fmuser.org -> Islandia
id.fmuser.org -> Bahasa Indonesia
ga.fmuser.org -> Irlandia
it.fmuser.org -> Italia
ja.fmuser.org -> Jepang
ko.fmuser.org -> Korea
lv.fmuser.org -> Latvia
lt.fmuser.org -> Lithuania
mk.fmuser.org -> Makedonia
ms.fmuser.org -> Melayu
mt.fmuser.org -> Malta
no.fmuser.org -> Norwegia
fa.fmuser.org -> Persia
pl.fmuser.org -> Polandia
pt.fmuser.org -> Portugis
ro.fmuser.org -> Rumania
ru.fmuser.org -> Rusia
sr.fmuser.org -> Serbia
sk.fmuser.org -> Slowakia
sl.fmuser.org -> Slovenia
es.fmuser.org -> Spanyol
sw.fmuser.org -> Swahili
sv.fmuser.org -> Swedia
th.fmuser.org -> Thailand
tr.fmuser.org -> Turki
uk.fmuser.org -> Ukraina
ur.fmuser.org -> Urdu
vi.fmuser.org -> Vietnam
cy.fmuser.org -> Welsh
yi.fmuser.org -> Yiddish
FMUSER Wirless Mengirim Video Dan Audio Lebih Mudah!
Kontak
Alamat:
No.305 Kamar HuiLan Building No.273 Huanpu Road Guangzhou China 510620
Kategori
Buletin